Allow to interleave visibility and function modifiers
[hiphop-php.git] / hphp / hack / src / parser / js / full_fidelity_schema.json
blob937b806e0ccdb26e6909a66da760e961c3cd830d
1 { "description" :
2   "@generated JSON schema of the Hack Full Fidelity Parser AST",
3   "version" : "2017-12-07-0001",
4   "trivia" : [
5     { "trivia_kind_name" : "WhiteSpace",
6       "trivia_type_name" : "whitespace" },
7     { "trivia_kind_name" : "EndOfLine",
8       "trivia_type_name" : "end_of_line" },
9     { "trivia_kind_name" : "DelimitedComment",
10       "trivia_type_name" : "delimited_comment" },
11     { "trivia_kind_name" : "SingleLineComment",
12       "trivia_type_name" : "single_line_comment" },
13     { "trivia_kind_name" : "Unsafe",
14       "trivia_type_name" : "unsafe" },
15     { "trivia_kind_name" : "UnsafeExpression",
16       "trivia_type_name" : "unsafe_expression" },
17     { "trivia_kind_name" : "FixMe",
18       "trivia_type_name" : "fix_me" },
19     { "trivia_kind_name" : "IgnoreError",
20       "trivia_type_name" : "ignore_error" },
21     { "trivia_kind_name" : "FallThrough",
22       "trivia_type_name" : "fall_through" },
23     { "trivia_kind_name" : "ExtraTokenError",
24       "trivia_type_name" : "extra_token_error" },
25     { "trivia_kind_name" : "AfterHaltCompiler",
26       "trivia_type_name" : "after_halt_compiler" } ],
27   "tokens" : [
28     { "token_kind" : "Abstract",
29       "token_text" : "abstract" },
30     { "token_kind" : "And",
31       "token_text" : "and" },
32     { "token_kind" : "Array",
33       "token_text" : "array" },
34     { "token_kind" : "Arraykey",
35       "token_text" : "arraykey" },
36     { "token_kind" : "As",
37       "token_text" : "as" },
38     { "token_kind" : "Async",
39       "token_text" : "async" },
40     { "token_kind" : "Attribute",
41       "token_text" : "attribute" },
42     { "token_kind" : "Await",
43       "token_text" : "await" },
44     { "token_kind" : "Bool",
45       "token_text" : "bool" },
46     { "token_kind" : "Break",
47       "token_text" : "break" },
48     { "token_kind" : "Case",
49       "token_text" : "case" },
50     { "token_kind" : "Catch",
51       "token_text" : "catch" },
52     { "token_kind" : "Category",
53       "token_text" : "category" },
54     { "token_kind" : "Children",
55       "token_text" : "children" },
56     { "token_kind" : "Class",
57       "token_text" : "class" },
58     { "token_kind" : "Classname",
59       "token_text" : "classname" },
60     { "token_kind" : "Clone",
61       "token_text" : "clone" },
62     { "token_kind" : "Const",
63       "token_text" : "const" },
64     { "token_kind" : "Construct",
65       "token_text" : "__construct" },
66     { "token_kind" : "Continue",
67       "token_text" : "continue" },
68     { "token_kind" : "Coroutine",
69       "token_text" : "coroutine" },
70     { "token_kind" : "Darray",
71       "token_text" : "darray" },
72     { "token_kind" : "Declare",
73       "token_text" : "declare" },
74     { "token_kind" : "Default",
75       "token_text" : "default" },
76     { "token_kind" : "Define",
77       "token_text" : "define" },
78     { "token_kind" : "Destruct",
79       "token_text" : "__destruct" },
80     { "token_kind" : "Dict",
81       "token_text" : "dict" },
82     { "token_kind" : "Do",
83       "token_text" : "do" },
84     { "token_kind" : "Double",
85       "token_text" : "double" },
86     { "token_kind" : "Echo",
87       "token_text" : "echo" },
88     { "token_kind" : "Else",
89       "token_text" : "else" },
90     { "token_kind" : "Elseif",
91       "token_text" : "elseif" },
92     { "token_kind" : "Empty",
93       "token_text" : "empty" },
94     { "token_kind" : "Endif",
95       "token_text" : "endif" },
96     { "token_kind" : "Enum",
97       "token_text" : "enum" },
98     { "token_kind" : "Eval",
99       "token_text" : "eval" },
100     { "token_kind" : "Extends",
101       "token_text" : "extends" },
102     { "token_kind" : "Fallthrough",
103       "token_text" : "fallthrough" },
104     { "token_kind" : "Float",
105       "token_text" : "float" },
106     { "token_kind" : "Final",
107       "token_text" : "final" },
108     { "token_kind" : "Finally",
109       "token_text" : "finally" },
110     { "token_kind" : "For",
111       "token_text" : "for" },
112     { "token_kind" : "Foreach",
113       "token_text" : "foreach" },
114     { "token_kind" : "From",
115       "token_text" : "from" },
116     { "token_kind" : "Function",
117       "token_text" : "function" },
118     { "token_kind" : "Global",
119       "token_text" : "global" },
120     { "token_kind" : "Goto",
121       "token_text" : "goto" },
122     { "token_kind" : "If",
123       "token_text" : "if" },
124     { "token_kind" : "Implements",
125       "token_text" : "implements" },
126     { "token_kind" : "Include",
127       "token_text" : "include" },
128     { "token_kind" : "Include_once",
129       "token_text" : "include_once" },
130     { "token_kind" : "Inout",
131       "token_text" : "inout" },
132     { "token_kind" : "Instanceof",
133       "token_text" : "instanceof" },
134     { "token_kind" : "Insteadof",
135       "token_text" : "insteadof" },
136     { "token_kind" : "Int",
137       "token_text" : "int" },
138     { "token_kind" : "Interface",
139       "token_text" : "interface" },
140     { "token_kind" : "Is",
141       "token_text" : "is" },
142     { "token_kind" : "Isset",
143       "token_text" : "isset" },
144     { "token_kind" : "Keyset",
145       "token_text" : "keyset" },
146     { "token_kind" : "List",
147       "token_text" : "list" },
148     { "token_kind" : "Mixed",
149       "token_text" : "mixed" },
150     { "token_kind" : "Namespace",
151       "token_text" : "namespace" },
152     { "token_kind" : "New",
153       "token_text" : "new" },
154     { "token_kind" : "Newtype",
155       "token_text" : "newtype" },
156     { "token_kind" : "Noreturn",
157       "token_text" : "noreturn" },
158     { "token_kind" : "Num",
159       "token_text" : "num" },
160     { "token_kind" : "Object",
161       "token_text" : "object" },
162     { "token_kind" : "Or",
163       "token_text" : "or" },
164     { "token_kind" : "Parent",
165       "token_text" : "parent" },
166     { "token_kind" : "Print",
167       "token_text" : "print" },
168     { "token_kind" : "Private",
169       "token_text" : "private" },
170     { "token_kind" : "Protected",
171       "token_text" : "protected" },
172     { "token_kind" : "Public",
173       "token_text" : "public" },
174     { "token_kind" : "Require",
175       "token_text" : "require" },
176     { "token_kind" : "Require_once",
177       "token_text" : "require_once" },
178     { "token_kind" : "Required",
179       "token_text" : "required" },
180     { "token_kind" : "Resource",
181       "token_text" : "resource" },
182     { "token_kind" : "Return",
183       "token_text" : "return" },
184     { "token_kind" : "Self",
185       "token_text" : "self" },
186     { "token_kind" : "Shape",
187       "token_text" : "shape" },
188     { "token_kind" : "Static",
189       "token_text" : "static" },
190     { "token_kind" : "String",
191       "token_text" : "string" },
192     { "token_kind" : "Super",
193       "token_text" : "super" },
194     { "token_kind" : "Suspend",
195       "token_text" : "suspend" },
196     { "token_kind" : "Switch",
197       "token_text" : "switch" },
198     { "token_kind" : "This",
199       "token_text" : "this" },
200     { "token_kind" : "Throw",
201       "token_text" : "throw" },
202     { "token_kind" : "Trait",
203       "token_text" : "trait" },
204     { "token_kind" : "Try",
205       "token_text" : "try" },
206     { "token_kind" : "Tuple",
207       "token_text" : "tuple" },
208     { "token_kind" : "Type",
209       "token_text" : "type" },
210     { "token_kind" : "Unset",
211       "token_text" : "unset" },
212     { "token_kind" : "Use",
213       "token_text" : "use" },
214     { "token_kind" : "Using",
215       "token_text" : "using" },
216     { "token_kind" : "Var",
217       "token_text" : "var" },
218     { "token_kind" : "Varray",
219       "token_text" : "varray" },
220     { "token_kind" : "Vec",
221       "token_text" : "vec" },
222     { "token_kind" : "Void",
223       "token_text" : "void" },
224     { "token_kind" : "Where",
225       "token_text" : "where" },
226     { "token_kind" : "While",
227       "token_text" : "while" },
228     { "token_kind" : "Xor",
229       "token_text" : "xor" },
230     { "token_kind" : "Yield",
231       "token_text" : "yield" },
232     { "token_kind" : "LeftBracket",
233       "token_text" : "[" },
234     { "token_kind" : "RightBracket",
235       "token_text" : "]" },
236     { "token_kind" : "LeftParen",
237       "token_text" : "(" },
238     { "token_kind" : "RightParen",
239       "token_text" : ")" },
240     { "token_kind" : "LeftBrace",
241       "token_text" : "{" },
242     { "token_kind" : "RightBrace",
243       "token_text" : "}" },
244     { "token_kind" : "Dot",
245       "token_text" : "." },
246     { "token_kind" : "MinusGreaterThan",
247       "token_text" : "->" },
248     { "token_kind" : "PlusPlus",
249       "token_text" : "++" },
250     { "token_kind" : "MinusMinus",
251       "token_text" : "--" },
252     { "token_kind" : "StarStar",
253       "token_text" : "**" },
254     { "token_kind" : "Star",
255       "token_text" : "*" },
256     { "token_kind" : "Plus",
257       "token_text" : "+" },
258     { "token_kind" : "Minus",
259       "token_text" : "-" },
260     { "token_kind" : "Tilde",
261       "token_text" : "~" },
262     { "token_kind" : "Exclamation",
263       "token_text" : "!" },
264     { "token_kind" : "Dollar",
265       "token_text" : "$" },
266     { "token_kind" : "Slash",
267       "token_text" : "/" },
268     { "token_kind" : "Percent",
269       "token_text" : "%" },
270     { "token_kind" : "LessThanGreaterThan",
271       "token_text" : "<>" },
272     { "token_kind" : "LessThanEqualGreaterThan",
273       "token_text" : "<=>" },
274     { "token_kind" : "LessThanLessThan",
275       "token_text" : "<<" },
276     { "token_kind" : "GreaterThanGreaterThan",
277       "token_text" : ">>" },
278     { "token_kind" : "LessThan",
279       "token_text" : "<" },
280     { "token_kind" : "GreaterThan",
281       "token_text" : ">" },
282     { "token_kind" : "LessThanEqual",
283       "token_text" : "<=" },
284     { "token_kind" : "GreaterThanEqual",
285       "token_text" : ">=" },
286     { "token_kind" : "EqualEqual",
287       "token_text" : "==" },
288     { "token_kind" : "EqualEqualEqual",
289       "token_text" : "===" },
290     { "token_kind" : "ExclamationEqual",
291       "token_text" : "!=" },
292     { "token_kind" : "ExclamationEqualEqual",
293       "token_text" : "!==" },
294     { "token_kind" : "Carat",
295       "token_text" : "^" },
296     { "token_kind" : "Bar",
297       "token_text" : "|" },
298     { "token_kind" : "Ampersand",
299       "token_text" : "&" },
300     { "token_kind" : "AmpersandAmpersand",
301       "token_text" : "&&" },
302     { "token_kind" : "BarBar",
303       "token_text" : "||" },
304     { "token_kind" : "Question",
305       "token_text" : "?" },
306     { "token_kind" : "QuestionColon",
307       "token_text" : "?:" },
308     { "token_kind" : "QuestionQuestion",
309       "token_text" : "??" },
310     { "token_kind" : "Colon",
311       "token_text" : ":" },
312     { "token_kind" : "Semicolon",
313       "token_text" : ";" },
314     { "token_kind" : "Equal",
315       "token_text" : "=" },
316     { "token_kind" : "StarStarEqual",
317       "token_text" : "**=" },
318     { "token_kind" : "StarEqual",
319       "token_text" : "*=" },
320     { "token_kind" : "SlashEqual",
321       "token_text" : "/=" },
322     { "token_kind" : "PercentEqual",
323       "token_text" : "%=" },
324     { "token_kind" : "PlusEqual",
325       "token_text" : "+=" },
326     { "token_kind" : "MinusEqual",
327       "token_text" : "-=" },
328     { "token_kind" : "DotEqual",
329       "token_text" : ".=" },
330     { "token_kind" : "LessThanLessThanEqual",
331       "token_text" : "<<=" },
332     { "token_kind" : "GreaterThanGreaterThanEqual",
333       "token_text" : ">>=" },
334     { "token_kind" : "AmpersandEqual",
335       "token_text" : "&=" },
336     { "token_kind" : "CaratEqual",
337       "token_text" : "^=" },
338     { "token_kind" : "BarEqual",
339       "token_text" : "|=" },
340     { "token_kind" : "Comma",
341       "token_text" : "," },
342     { "token_kind" : "At",
343       "token_text" : "@" },
344     { "token_kind" : "ColonColon",
345       "token_text" : "::" },
346     { "token_kind" : "EqualGreaterThan",
347       "token_text" : "=>" },
348     { "token_kind" : "EqualEqualGreaterThan",
349       "token_text" : "==>" },
350     { "token_kind" : "QuestionMinusGreaterThan",
351       "token_text" : "?->" },
352     { "token_kind" : "DotDotDot",
353       "token_text" : "..." },
354     { "token_kind" : "DollarDollar",
355       "token_text" : "$$" },
356     { "token_kind" : "BarGreaterThan",
357       "token_text" : "|>" },
358     { "token_kind" : "NullLiteral",
359       "token_text" : "null" },
360     { "token_kind" : "SlashGreaterThan",
361       "token_text" : "/>" },
362     { "token_kind" : "LessThanSlash",
363       "token_text" : "</" },
364     { "token_kind" : "LessThanQuestion",
365       "token_text" : "<?" },
366     { "token_kind" : "QuestionGreaterThan",
367       "token_text" : "?>" },
368     { "token_kind" : "HaltCompiler",
369       "token_text" : "__halt_compiler" },
371     { "token_kind" : "ErrorToken",
372       "token_text" : null },
373     { "token_kind" : "Name",
374       "token_text" : null },
375     { "token_kind" : "QualifiedName",
376       "token_text" : null },
377     { "token_kind" : "Variable",
378       "token_text" : null },
379     { "token_kind" : "NamespacePrefix",
380       "token_text" : null },
381     { "token_kind" : "DecimalLiteral",
382       "token_text" : null },
383     { "token_kind" : "OctalLiteral",
384       "token_text" : null },
385     { "token_kind" : "HexadecimalLiteral",
386       "token_text" : null },
387     { "token_kind" : "BinaryLiteral",
388       "token_text" : null },
389     { "token_kind" : "FloatingLiteral",
390       "token_text" : null },
391     { "token_kind" : "ExecutionStringLiteral",
392       "token_text" : null },
393     { "token_kind" : "ExecutionStringLiteralHead",
394       "token_text" : null },
395     { "token_kind" : "ExecutionStringLiteralTail",
396       "token_text" : null },
397     { "token_kind" : "SingleQuotedStringLiteral",
398       "token_text" : null },
399     { "token_kind" : "DoubleQuotedStringLiteral",
400       "token_text" : null },
401     { "token_kind" : "DoubleQuotedStringLiteralHead",
402       "token_text" : null },
403     { "token_kind" : "StringLiteralBody",
404       "token_text" : null },
405     { "token_kind" : "DoubleQuotedStringLiteralTail",
406       "token_text" : null },
407     { "token_kind" : "HeredocStringLiteral",
408       "token_text" : null },
409     { "token_kind" : "HeredocStringLiteralHead",
410       "token_text" : null },
411     { "token_kind" : "HeredocStringLiteralTail",
412       "token_text" : null },
413     { "token_kind" : "NowdocStringLiteral",
414       "token_text" : null },
415     { "token_kind" : "BooleanLiteral",
416       "token_text" : null },
417     { "token_kind" : "XHPCategoryName",
418       "token_text" : null },
419     { "token_kind" : "XHPElementName",
420       "token_text" : null },
421     { "token_kind" : "XHPClassName",
422       "token_text" : null },
423     { "token_kind" : "XHPStringLiteral",
424       "token_text" : null },
425     { "token_kind" : "XHPBody",
426       "token_text" : null },
427     { "token_kind" : "XHPComment",
428       "token_text" : null },
429     { "token_kind" : "Markup",
430       "token_text" : null },
432     { "token_kind" : "EndOfFile",
433       "token_text" : null } ],
434   "AST" : [
435     { "kind_name" : "EndOfFile",
436       "type_name" : "end_of_file",
437       "description" : "end_of_file",
438       "prefix" : "end_of_file",
439       "fields" : [
440         { "field_name" : "token" }
441       ] },
442     { "kind_name" : "Script",
443       "type_name" : "script",
444       "description" : "script",
445       "prefix" : "script",
446       "fields" : [
447         { "field_name" : "declarations" }
448       ] },
449     { "kind_name" : "SimpleTypeSpecifier",
450       "type_name" : "simple_type_specifier",
451       "description" : "simple_type_specifier",
452       "prefix" : "simple_type",
453       "fields" : [
454         { "field_name" : "specifier" }
455       ] },
456     { "kind_name" : "LiteralExpression",
457       "type_name" : "literal_expression",
458       "description" : "literal",
459       "prefix" : "literal",
460       "fields" : [
461         { "field_name" : "expression" }
462       ] },
463     { "kind_name" : "VariableExpression",
464       "type_name" : "variable_expression",
465       "description" : "variable",
466       "prefix" : "variable",
467       "fields" : [
468         { "field_name" : "expression" }
469       ] },
470     { "kind_name" : "QualifiedNameExpression",
471       "type_name" : "qualified_name_expression",
472       "description" : "qualified_name",
473       "prefix" : "qualified_name",
474       "fields" : [
475         { "field_name" : "expression" }
476       ] },
477     { "kind_name" : "PipeVariableExpression",
478       "type_name" : "pipe_variable_expression",
479       "description" : "pipe_variable",
480       "prefix" : "pipe_variable",
481       "fields" : [
482         { "field_name" : "expression" }
483       ] },
484     { "kind_name" : "EnumDeclaration",
485       "type_name" : "enum_declaration",
486       "description" : "enum_declaration",
487       "prefix" : "enum",
488       "fields" : [
489         { "field_name" : "attribute_spec" },
490         { "field_name" : "keyword" },
491         { "field_name" : "name" },
492         { "field_name" : "colon" },
493         { "field_name" : "base" },
494         { "field_name" : "type" },
495         { "field_name" : "left_brace" },
496         { "field_name" : "enumerators" },
497         { "field_name" : "right_brace" }
498       ] },
499     { "kind_name" : "Enumerator",
500       "type_name" : "enumerator",
501       "description" : "enumerator",
502       "prefix" : "enumerator",
503       "fields" : [
504         { "field_name" : "name" },
505         { "field_name" : "equal" },
506         { "field_name" : "value" },
507         { "field_name" : "semicolon" }
508       ] },
509     { "kind_name" : "AliasDeclaration",
510       "type_name" : "alias_declaration",
511       "description" : "alias_declaration",
512       "prefix" : "alias",
513       "fields" : [
514         { "field_name" : "attribute_spec" },
515         { "field_name" : "keyword" },
516         { "field_name" : "name" },
517         { "field_name" : "generic_parameter" },
518         { "field_name" : "constraint" },
519         { "field_name" : "equal" },
520         { "field_name" : "type" },
521         { "field_name" : "semicolon" }
522       ] },
523     { "kind_name" : "PropertyDeclaration",
524       "type_name" : "property_declaration",
525       "description" : "property_declaration",
526       "prefix" : "property",
527       "fields" : [
528         { "field_name" : "modifiers" },
529         { "field_name" : "type" },
530         { "field_name" : "declarators" },
531         { "field_name" : "semicolon" }
532       ] },
533     { "kind_name" : "PropertyDeclarator",
534       "type_name" : "property_declarator",
535       "description" : "property_declarator",
536       "prefix" : "property",
537       "fields" : [
538         { "field_name" : "name" },
539         { "field_name" : "initializer" }
540       ] },
541     { "kind_name" : "NamespaceDeclaration",
542       "type_name" : "namespace_declaration",
543       "description" : "namespace_declaration",
544       "prefix" : "namespace",
545       "fields" : [
546         { "field_name" : "keyword" },
547         { "field_name" : "name" },
548         { "field_name" : "body" }
549       ] },
550     { "kind_name" : "NamespaceBody",
551       "type_name" : "namespace_body",
552       "description" : "namespace_body",
553       "prefix" : "namespace",
554       "fields" : [
555         { "field_name" : "left_brace" },
556         { "field_name" : "declarations" },
557         { "field_name" : "right_brace" }
558       ] },
559     { "kind_name" : "NamespaceEmptyBody",
560       "type_name" : "namespace_empty_body",
561       "description" : "namespace_empty_body",
562       "prefix" : "namespace",
563       "fields" : [
564         { "field_name" : "semicolon" }
565       ] },
566     { "kind_name" : "NamespaceUseDeclaration",
567       "type_name" : "namespace_use_declaration",
568       "description" : "namespace_use_declaration",
569       "prefix" : "namespace_use",
570       "fields" : [
571         { "field_name" : "keyword" },
572         { "field_name" : "kind" },
573         { "field_name" : "clauses" },
574         { "field_name" : "semicolon" }
575       ] },
576     { "kind_name" : "NamespaceGroupUseDeclaration",
577       "type_name" : "namespace_group_use_declaration",
578       "description" : "namespace_group_use_declaration",
579       "prefix" : "namespace_group_use",
580       "fields" : [
581         { "field_name" : "keyword" },
582         { "field_name" : "kind" },
583         { "field_name" : "prefix" },
584         { "field_name" : "left_brace" },
585         { "field_name" : "clauses" },
586         { "field_name" : "right_brace" },
587         { "field_name" : "semicolon" }
588       ] },
589     { "kind_name" : "NamespaceUseClause",
590       "type_name" : "namespace_use_clause",
591       "description" : "namespace_use_clause",
592       "prefix" : "namespace_use",
593       "fields" : [
594         { "field_name" : "clause_kind" },
595         { "field_name" : "name" },
596         { "field_name" : "as" },
597         { "field_name" : "alias" }
598       ] },
599     { "kind_name" : "FunctionDeclaration",
600       "type_name" : "function_declaration",
601       "description" : "function_declaration",
602       "prefix" : "function",
603       "fields" : [
604         { "field_name" : "attribute_spec" },
605         { "field_name" : "declaration_header" },
606         { "field_name" : "body" }
607       ] },
608     { "kind_name" : "FunctionDeclarationHeader",
609       "type_name" : "function_declaration_header",
610       "description" : "function_declaration_header",
611       "prefix" : "function",
612       "fields" : [
613         { "field_name" : "modifiers" },
614         { "field_name" : "keyword" },
615         { "field_name" : "ampersand" },
616         { "field_name" : "name" },
617         { "field_name" : "type_parameter_list" },
618         { "field_name" : "left_paren" },
619         { "field_name" : "parameter_list" },
620         { "field_name" : "right_paren" },
621         { "field_name" : "colon" },
622         { "field_name" : "type" },
623         { "field_name" : "where_clause" }
624       ] },
625     { "kind_name" : "WhereClause",
626       "type_name" : "where_clause",
627       "description" : "where_clause",
628       "prefix" : "where_clause",
629       "fields" : [
630         { "field_name" : "keyword" },
631         { "field_name" : "constraints" }
632       ] },
633     { "kind_name" : "WhereConstraint",
634       "type_name" : "where_constraint",
635       "description" : "where_constraint",
636       "prefix" : "where_constraint",
637       "fields" : [
638         { "field_name" : "left_type" },
639         { "field_name" : "operator" },
640         { "field_name" : "right_type" }
641       ] },
642     { "kind_name" : "MethodishDeclaration",
643       "type_name" : "methodish_declaration",
644       "description" : "methodish_declaration",
645       "prefix" : "methodish",
646       "fields" : [
647         { "field_name" : "attribute" },
648         { "field_name" : "function_decl_header" },
649         { "field_name" : "function_body" },
650         { "field_name" : "semicolon" }
651       ] },
652     { "kind_name" : "ClassishDeclaration",
653       "type_name" : "classish_declaration",
654       "description" : "classish_declaration",
655       "prefix" : "classish",
656       "fields" : [
657         { "field_name" : "attribute" },
658         { "field_name" : "modifiers" },
659         { "field_name" : "keyword" },
660         { "field_name" : "name" },
661         { "field_name" : "type_parameters" },
662         { "field_name" : "extends_keyword" },
663         { "field_name" : "extends_list" },
664         { "field_name" : "implements_keyword" },
665         { "field_name" : "implements_list" },
666         { "field_name" : "body" }
667       ] },
668     { "kind_name" : "ClassishBody",
669       "type_name" : "classish_body",
670       "description" : "classish_body",
671       "prefix" : "classish_body",
672       "fields" : [
673         { "field_name" : "left_brace" },
674         { "field_name" : "elements" },
675         { "field_name" : "right_brace" }
676       ] },
677     { "kind_name" : "TraitUsePrecedenceItem",
678       "type_name" : "trait_use_precedence_item",
679       "description" : "trait_use_precedence_item",
680       "prefix" : "trait_use_precedence_item",
681       "fields" : [
682         { "field_name" : "name" },
683         { "field_name" : "keyword" },
684         { "field_name" : "removed_names" }
685       ] },
686     { "kind_name" : "TraitUseAliasItem",
687       "type_name" : "trait_use_alias_item",
688       "description" : "trait_use_alias_item",
689       "prefix" : "trait_use_alias_item",
690       "fields" : [
691         { "field_name" : "aliasing_name" },
692         { "field_name" : "keyword" },
693         { "field_name" : "modifiers" },
694         { "field_name" : "aliased_name" }
695       ] },
696     { "kind_name" : "TraitUseConflictResolution",
697       "type_name" : "trait_use_conflict_resolution",
698       "description" : "trait_use_conflict_resolution",
699       "prefix" : "trait_use_conflict_resolution",
700       "fields" : [
701         { "field_name" : "keyword" },
702         { "field_name" : "names" },
703         { "field_name" : "left_brace" },
704         { "field_name" : "clauses" },
705         { "field_name" : "right_brace" }
706       ] },
707     { "kind_name" : "TraitUse",
708       "type_name" : "trait_use",
709       "description" : "trait_use",
710       "prefix" : "trait_use",
711       "fields" : [
712         { "field_name" : "keyword" },
713         { "field_name" : "names" },
714         { "field_name" : "semicolon" }
715       ] },
716     { "kind_name" : "RequireClause",
717       "type_name" : "require_clause",
718       "description" : "require_clause",
719       "prefix" : "require",
720       "fields" : [
721         { "field_name" : "keyword" },
722         { "field_name" : "kind" },
723         { "field_name" : "name" },
724         { "field_name" : "semicolon" }
725       ] },
726     { "kind_name" : "ConstDeclaration",
727       "type_name" : "const_declaration",
728       "description" : "const_declaration",
729       "prefix" : "const",
730       "fields" : [
731         { "field_name" : "abstract" },
732         { "field_name" : "keyword" },
733         { "field_name" : "type_specifier" },
734         { "field_name" : "declarators" },
735         { "field_name" : "semicolon" }
736       ] },
737     { "kind_name" : "ConstantDeclarator",
738       "type_name" : "constant_declarator",
739       "description" : "constant_declarator",
740       "prefix" : "constant_declarator",
741       "fields" : [
742         { "field_name" : "name" },
743         { "field_name" : "initializer" }
744       ] },
745     { "kind_name" : "TypeConstDeclaration",
746       "type_name" : "type_const_declaration",
747       "description" : "type_const_declaration",
748       "prefix" : "type_const",
749       "fields" : [
750         { "field_name" : "abstract" },
751         { "field_name" : "keyword" },
752         { "field_name" : "type_keyword" },
753         { "field_name" : "name" },
754         { "field_name" : "type_parameters" },
755         { "field_name" : "type_constraint" },
756         { "field_name" : "equal" },
757         { "field_name" : "type_specifier" },
758         { "field_name" : "semicolon" }
759       ] },
760     { "kind_name" : "DecoratedExpression",
761       "type_name" : "decorated_expression",
762       "description" : "decorated_expression",
763       "prefix" : "decorated_expression",
764       "fields" : [
765         { "field_name" : "decorator" },
766         { "field_name" : "expression" }
767       ] },
768     { "kind_name" : "ParameterDeclaration",
769       "type_name" : "parameter_declaration",
770       "description" : "parameter_declaration",
771       "prefix" : "parameter",
772       "fields" : [
773         { "field_name" : "attribute" },
774         { "field_name" : "visibility" },
775         { "field_name" : "call_convention" },
776         { "field_name" : "type" },
777         { "field_name" : "name" },
778         { "field_name" : "default_value" }
779       ] },
780     { "kind_name" : "VariadicParameter",
781       "type_name" : "variadic_parameter",
782       "description" : "variadic_parameter",
783       "prefix" : "variadic_parameter",
784       "fields" : [
785         { "field_name" : "call_convention" },
786         { "field_name" : "type" },
787         { "field_name" : "ellipsis" }
788       ] },
789     { "kind_name" : "AttributeSpecification",
790       "type_name" : "attribute_specification",
791       "description" : "attribute_specification",
792       "prefix" : "attribute_specification",
793       "fields" : [
794         { "field_name" : "left_double_angle" },
795         { "field_name" : "attributes" },
796         { "field_name" : "right_double_angle" }
797       ] },
798     { "kind_name" : "Attribute",
799       "type_name" : "attribute",
800       "description" : "attribute",
801       "prefix" : "attribute",
802       "fields" : [
803         { "field_name" : "name" },
804         { "field_name" : "left_paren" },
805         { "field_name" : "values" },
806         { "field_name" : "right_paren" }
807       ] },
808     { "kind_name" : "InclusionExpression",
809       "type_name" : "inclusion_expression",
810       "description" : "inclusion_expression",
811       "prefix" : "inclusion",
812       "fields" : [
813         { "field_name" : "require" },
814         { "field_name" : "filename" }
815       ] },
816     { "kind_name" : "InclusionDirective",
817       "type_name" : "inclusion_directive",
818       "description" : "inclusion_directive",
819       "prefix" : "inclusion",
820       "fields" : [
821         { "field_name" : "expression" },
822         { "field_name" : "semicolon" }
823       ] },
824     { "kind_name" : "CompoundStatement",
825       "type_name" : "compound_statement",
826       "description" : "compound_statement",
827       "prefix" : "compound",
828       "fields" : [
829         { "field_name" : "left_brace" },
830         { "field_name" : "statements" },
831         { "field_name" : "right_brace" }
832       ] },
833     { "kind_name" : "ExpressionStatement",
834       "type_name" : "expression_statement",
835       "description" : "expression_statement",
836       "prefix" : "expression_statement",
837       "fields" : [
838         { "field_name" : "expression" },
839         { "field_name" : "semicolon" }
840       ] },
841     { "kind_name" : "MarkupSection",
842       "type_name" : "markup_section",
843       "description" : "markup_section",
844       "prefix" : "markup",
845       "fields" : [
846         { "field_name" : "prefix" },
847         { "field_name" : "text" },
848         { "field_name" : "suffix" },
849         { "field_name" : "expression" }
850       ] },
851     { "kind_name" : "MarkupSuffix",
852       "type_name" : "markup_suffix",
853       "description" : "markup_suffix",
854       "prefix" : "markup_suffix",
855       "fields" : [
856         { "field_name" : "less_than_question" },
857         { "field_name" : "name" }
858       ] },
859     { "kind_name" : "UnsetStatement",
860       "type_name" : "unset_statement",
861       "description" : "unset_statement",
862       "prefix" : "unset",
863       "fields" : [
864         { "field_name" : "keyword" },
865         { "field_name" : "left_paren" },
866         { "field_name" : "variables" },
867         { "field_name" : "right_paren" },
868         { "field_name" : "semicolon" }
869       ] },
870     { "kind_name" : "UsingStatementBlockScoped",
871       "type_name" : "using_statement_block_scoped",
872       "description" : "using_statement_block_scoped",
873       "prefix" : "using_block",
874       "fields" : [
875         { "field_name" : "await_keyword" },
876         { "field_name" : "using_keyword" },
877         { "field_name" : "left_paren" },
878         { "field_name" : "expressions" },
879         { "field_name" : "right_paren" },
880         { "field_name" : "body" }
881       ] },
882     { "kind_name" : "UsingStatementFunctionScoped",
883       "type_name" : "using_statement_function_scoped",
884       "description" : "using_statement_function_scoped",
885       "prefix" : "using_function",
886       "fields" : [
887         { "field_name" : "await_keyword" },
888         { "field_name" : "using_keyword" },
889         { "field_name" : "expression" },
890         { "field_name" : "semicolon" }
891       ] },
892     { "kind_name" : "DeclareDirectiveStatement",
893       "type_name" : "declare_directive_statement",
894       "description" : "declare_directive_statement",
895       "prefix" : "declare_directive",
896       "fields" : [
897         { "field_name" : "keyword" },
898         { "field_name" : "left_paren" },
899         { "field_name" : "expression" },
900         { "field_name" : "right_paren" },
901         { "field_name" : "semicolon" }
902       ] },
903     { "kind_name" : "DeclareBlockStatement",
904       "type_name" : "declare_block_statement",
905       "description" : "declare_block_statement",
906       "prefix" : "declare_block",
907       "fields" : [
908         { "field_name" : "keyword" },
909         { "field_name" : "left_paren" },
910         { "field_name" : "expression" },
911         { "field_name" : "right_paren" },
912         { "field_name" : "body" }
913       ] },
914     { "kind_name" : "WhileStatement",
915       "type_name" : "while_statement",
916       "description" : "while_statement",
917       "prefix" : "while",
918       "fields" : [
919         { "field_name" : "keyword" },
920         { "field_name" : "left_paren" },
921         { "field_name" : "condition" },
922         { "field_name" : "right_paren" },
923         { "field_name" : "body" }
924       ] },
925     { "kind_name" : "IfStatement",
926       "type_name" : "if_statement",
927       "description" : "if_statement",
928       "prefix" : "if",
929       "fields" : [
930         { "field_name" : "keyword" },
931         { "field_name" : "left_paren" },
932         { "field_name" : "condition" },
933         { "field_name" : "right_paren" },
934         { "field_name" : "statement" },
935         { "field_name" : "elseif_clauses" },
936         { "field_name" : "else_clause" }
937       ] },
938     { "kind_name" : "ElseifClause",
939       "type_name" : "elseif_clause",
940       "description" : "elseif_clause",
941       "prefix" : "elseif",
942       "fields" : [
943         { "field_name" : "keyword" },
944         { "field_name" : "left_paren" },
945         { "field_name" : "condition" },
946         { "field_name" : "right_paren" },
947         { "field_name" : "statement" }
948       ] },
949     { "kind_name" : "ElseClause",
950       "type_name" : "else_clause",
951       "description" : "else_clause",
952       "prefix" : "else",
953       "fields" : [
954         { "field_name" : "keyword" },
955         { "field_name" : "statement" }
956       ] },
957     { "kind_name" : "IfEndIfStatement",
958       "type_name" : "if_endif_statement",
959       "description" : "if_endif_statement",
960       "prefix" : "if_endif",
961       "fields" : [
962         { "field_name" : "keyword" },
963         { "field_name" : "left_paren" },
964         { "field_name" : "condition" },
965         { "field_name" : "right_paren" },
966         { "field_name" : "colon" },
967         { "field_name" : "statement" },
968         { "field_name" : "elseif_colon_clauses" },
969         { "field_name" : "else_colon_clause" },
970         { "field_name" : "endif_keyword" },
971         { "field_name" : "semicolon" }
972       ] },
973     { "kind_name" : "ElseifColonClause",
974       "type_name" : "elseif_colon_clause",
975       "description" : "elseif_colon_clause",
976       "prefix" : "elseif_colon",
977       "fields" : [
978         { "field_name" : "keyword" },
979         { "field_name" : "left_paren" },
980         { "field_name" : "condition" },
981         { "field_name" : "right_paren" },
982         { "field_name" : "colon" },
983         { "field_name" : "statement" }
984       ] },
985     { "kind_name" : "ElseColonClause",
986       "type_name" : "else_colon_clause",
987       "description" : "else_colon_clause",
988       "prefix" : "else_colon",
989       "fields" : [
990         { "field_name" : "keyword" },
991         { "field_name" : "colon" },
992         { "field_name" : "statement" }
993       ] },
994     { "kind_name" : "TryStatement",
995       "type_name" : "try_statement",
996       "description" : "try_statement",
997       "prefix" : "try",
998       "fields" : [
999         { "field_name" : "keyword" },
1000         { "field_name" : "compound_statement" },
1001         { "field_name" : "catch_clauses" },
1002         { "field_name" : "finally_clause" }
1003       ] },
1004     { "kind_name" : "CatchClause",
1005       "type_name" : "catch_clause",
1006       "description" : "catch_clause",
1007       "prefix" : "catch",
1008       "fields" : [
1009         { "field_name" : "keyword" },
1010         { "field_name" : "left_paren" },
1011         { "field_name" : "type" },
1012         { "field_name" : "variable" },
1013         { "field_name" : "right_paren" },
1014         { "field_name" : "body" }
1015       ] },
1016     { "kind_name" : "FinallyClause",
1017       "type_name" : "finally_clause",
1018       "description" : "finally_clause",
1019       "prefix" : "finally",
1020       "fields" : [
1021         { "field_name" : "keyword" },
1022         { "field_name" : "body" }
1023       ] },
1024     { "kind_name" : "DoStatement",
1025       "type_name" : "do_statement",
1026       "description" : "do_statement",
1027       "prefix" : "do",
1028       "fields" : [
1029         { "field_name" : "keyword" },
1030         { "field_name" : "body" },
1031         { "field_name" : "while_keyword" },
1032         { "field_name" : "left_paren" },
1033         { "field_name" : "condition" },
1034         { "field_name" : "right_paren" },
1035         { "field_name" : "semicolon" }
1036       ] },
1037     { "kind_name" : "ForStatement",
1038       "type_name" : "for_statement",
1039       "description" : "for_statement",
1040       "prefix" : "for",
1041       "fields" : [
1042         { "field_name" : "keyword" },
1043         { "field_name" : "left_paren" },
1044         { "field_name" : "initializer" },
1045         { "field_name" : "first_semicolon" },
1046         { "field_name" : "control" },
1047         { "field_name" : "second_semicolon" },
1048         { "field_name" : "end_of_loop" },
1049         { "field_name" : "right_paren" },
1050         { "field_name" : "body" }
1051       ] },
1052     { "kind_name" : "ForeachStatement",
1053       "type_name" : "foreach_statement",
1054       "description" : "foreach_statement",
1055       "prefix" : "foreach",
1056       "fields" : [
1057         { "field_name" : "keyword" },
1058         { "field_name" : "left_paren" },
1059         { "field_name" : "collection" },
1060         { "field_name" : "await_keyword" },
1061         { "field_name" : "as" },
1062         { "field_name" : "key" },
1063         { "field_name" : "arrow" },
1064         { "field_name" : "value" },
1065         { "field_name" : "right_paren" },
1066         { "field_name" : "body" }
1067       ] },
1068     { "kind_name" : "SwitchStatement",
1069       "type_name" : "switch_statement",
1070       "description" : "switch_statement",
1071       "prefix" : "switch",
1072       "fields" : [
1073         { "field_name" : "keyword" },
1074         { "field_name" : "left_paren" },
1075         { "field_name" : "expression" },
1076         { "field_name" : "right_paren" },
1077         { "field_name" : "left_brace" },
1078         { "field_name" : "sections" },
1079         { "field_name" : "right_brace" }
1080       ] },
1081     { "kind_name" : "SwitchSection",
1082       "type_name" : "switch_section",
1083       "description" : "switch_section",
1084       "prefix" : "switch_section",
1085       "fields" : [
1086         { "field_name" : "labels" },
1087         { "field_name" : "statements" },
1088         { "field_name" : "fallthrough" }
1089       ] },
1090     { "kind_name" : "SwitchFallthrough",
1091       "type_name" : "switch_fallthrough",
1092       "description" : "switch_fallthrough",
1093       "prefix" : "fallthrough",
1094       "fields" : [
1095         { "field_name" : "keyword" },
1096         { "field_name" : "semicolon" }
1097       ] },
1098     { "kind_name" : "CaseLabel",
1099       "type_name" : "case_label",
1100       "description" : "case_label",
1101       "prefix" : "case",
1102       "fields" : [
1103         { "field_name" : "keyword" },
1104         { "field_name" : "expression" },
1105         { "field_name" : "colon" }
1106       ] },
1107     { "kind_name" : "DefaultLabel",
1108       "type_name" : "default_label",
1109       "description" : "default_label",
1110       "prefix" : "default",
1111       "fields" : [
1112         { "field_name" : "keyword" },
1113         { "field_name" : "colon" }
1114       ] },
1115     { "kind_name" : "ReturnStatement",
1116       "type_name" : "return_statement",
1117       "description" : "return_statement",
1118       "prefix" : "return",
1119       "fields" : [
1120         { "field_name" : "keyword" },
1121         { "field_name" : "expression" },
1122         { "field_name" : "semicolon" }
1123       ] },
1124     { "kind_name" : "GotoLabel",
1125       "type_name" : "goto_label",
1126       "description" : "goto_label",
1127       "prefix" : "goto_label",
1128       "fields" : [
1129         { "field_name" : "name" },
1130         { "field_name" : "colon" }
1131       ] },
1132     { "kind_name" : "GotoStatement",
1133       "type_name" : "goto_statement",
1134       "description" : "goto_statement",
1135       "prefix" : "goto_statement",
1136       "fields" : [
1137         { "field_name" : "keyword" },
1138         { "field_name" : "label_name" },
1139         { "field_name" : "semicolon" }
1140       ] },
1141     { "kind_name" : "ThrowStatement",
1142       "type_name" : "throw_statement",
1143       "description" : "throw_statement",
1144       "prefix" : "throw",
1145       "fields" : [
1146         { "field_name" : "keyword" },
1147         { "field_name" : "expression" },
1148         { "field_name" : "semicolon" }
1149       ] },
1150     { "kind_name" : "BreakStatement",
1151       "type_name" : "break_statement",
1152       "description" : "break_statement",
1153       "prefix" : "break",
1154       "fields" : [
1155         { "field_name" : "keyword" },
1156         { "field_name" : "level" },
1157         { "field_name" : "semicolon" }
1158       ] },
1159     { "kind_name" : "ContinueStatement",
1160       "type_name" : "continue_statement",
1161       "description" : "continue_statement",
1162       "prefix" : "continue",
1163       "fields" : [
1164         { "field_name" : "keyword" },
1165         { "field_name" : "level" },
1166         { "field_name" : "semicolon" }
1167       ] },
1168     { "kind_name" : "FunctionStaticStatement",
1169       "type_name" : "function_static_statement",
1170       "description" : "function_static_statement",
1171       "prefix" : "static",
1172       "fields" : [
1173         { "field_name" : "static_keyword" },
1174         { "field_name" : "declarations" },
1175         { "field_name" : "semicolon" }
1176       ] },
1177     { "kind_name" : "StaticDeclarator",
1178       "type_name" : "static_declarator",
1179       "description" : "static_declarator",
1180       "prefix" : "static",
1181       "fields" : [
1182         { "field_name" : "name" },
1183         { "field_name" : "initializer" }
1184       ] },
1185     { "kind_name" : "EchoStatement",
1186       "type_name" : "echo_statement",
1187       "description" : "echo_statement",
1188       "prefix" : "echo",
1189       "fields" : [
1190         { "field_name" : "keyword" },
1191         { "field_name" : "expressions" },
1192         { "field_name" : "semicolon" }
1193       ] },
1194     { "kind_name" : "GlobalStatement",
1195       "type_name" : "global_statement",
1196       "description" : "global_statement",
1197       "prefix" : "global",
1198       "fields" : [
1199         { "field_name" : "keyword" },
1200         { "field_name" : "variables" },
1201         { "field_name" : "semicolon" }
1202       ] },
1203     { "kind_name" : "SimpleInitializer",
1204       "type_name" : "simple_initializer",
1205       "description" : "simple_initializer",
1206       "prefix" : "simple_initializer",
1207       "fields" : [
1208         { "field_name" : "equal" },
1209         { "field_name" : "value" }
1210       ] },
1211     { "kind_name" : "AnonymousClass",
1212       "type_name" : "anonymous_class",
1213       "description" : "anonymous_class",
1214       "prefix" : "anonymous_class",
1215       "fields" : [
1216         { "field_name" : "class_keyword" },
1217         { "field_name" : "left_paren" },
1218         { "field_name" : "argument_list" },
1219         { "field_name" : "right_paren" },
1220         { "field_name" : "extends_keyword" },
1221         { "field_name" : "extends_list" },
1222         { "field_name" : "implements_keyword" },
1223         { "field_name" : "implements_list" },
1224         { "field_name" : "body" }
1225       ] },
1226     { "kind_name" : "AnonymousFunction",
1227       "type_name" : "anonymous_function",
1228       "description" : "anonymous_function",
1229       "prefix" : "anonymous",
1230       "fields" : [
1231         { "field_name" : "static_keyword" },
1232         { "field_name" : "async_keyword" },
1233         { "field_name" : "coroutine_keyword" },
1234         { "field_name" : "function_keyword" },
1235         { "field_name" : "left_paren" },
1236         { "field_name" : "parameters" },
1237         { "field_name" : "right_paren" },
1238         { "field_name" : "colon" },
1239         { "field_name" : "type" },
1240         { "field_name" : "use" },
1241         { "field_name" : "body" }
1242       ] },
1243     { "kind_name" : "Php7AnonymousFunction",
1244       "type_name" : "php7_anonymous_function",
1245       "description" : "php7_anonymous_function",
1246       "prefix" : "php7_anonymous",
1247       "fields" : [
1248         { "field_name" : "static_keyword" },
1249         { "field_name" : "async_keyword" },
1250         { "field_name" : "coroutine_keyword" },
1251         { "field_name" : "function_keyword" },
1252         { "field_name" : "left_paren" },
1253         { "field_name" : "parameters" },
1254         { "field_name" : "right_paren" },
1255         { "field_name" : "use" },
1256         { "field_name" : "colon" },
1257         { "field_name" : "type" },
1258         { "field_name" : "body" }
1259       ] },
1260     { "kind_name" : "AnonymousFunctionUseClause",
1261       "type_name" : "anonymous_function_use_clause",
1262       "description" : "anonymous_function_use_clause",
1263       "prefix" : "anonymous_use",
1264       "fields" : [
1265         { "field_name" : "keyword" },
1266         { "field_name" : "left_paren" },
1267         { "field_name" : "variables" },
1268         { "field_name" : "right_paren" }
1269       ] },
1270     { "kind_name" : "LambdaExpression",
1271       "type_name" : "lambda_expression",
1272       "description" : "lambda_expression",
1273       "prefix" : "lambda",
1274       "fields" : [
1275         { "field_name" : "async" },
1276         { "field_name" : "coroutine" },
1277         { "field_name" : "signature" },
1278         { "field_name" : "arrow" },
1279         { "field_name" : "body" }
1280       ] },
1281     { "kind_name" : "LambdaSignature",
1282       "type_name" : "lambda_signature",
1283       "description" : "lambda_signature",
1284       "prefix" : "lambda",
1285       "fields" : [
1286         { "field_name" : "left_paren" },
1287         { "field_name" : "parameters" },
1288         { "field_name" : "right_paren" },
1289         { "field_name" : "colon" },
1290         { "field_name" : "type" }
1291       ] },
1292     { "kind_name" : "CastExpression",
1293       "type_name" : "cast_expression",
1294       "description" : "cast_expression",
1295       "prefix" : "cast",
1296       "fields" : [
1297         { "field_name" : "left_paren" },
1298         { "field_name" : "type" },
1299         { "field_name" : "right_paren" },
1300         { "field_name" : "operand" }
1301       ] },
1302     { "kind_name" : "ScopeResolutionExpression",
1303       "type_name" : "scope_resolution_expression",
1304       "description" : "scope_resolution_expression",
1305       "prefix" : "scope_resolution",
1306       "fields" : [
1307         { "field_name" : "qualifier" },
1308         { "field_name" : "operator" },
1309         { "field_name" : "name" }
1310       ] },
1311     { "kind_name" : "MemberSelectionExpression",
1312       "type_name" : "member_selection_expression",
1313       "description" : "member_selection_expression",
1314       "prefix" : "member",
1315       "fields" : [
1316         { "field_name" : "object" },
1317         { "field_name" : "operator" },
1318         { "field_name" : "name" }
1319       ] },
1320     { "kind_name" : "SafeMemberSelectionExpression",
1321       "type_name" : "safe_member_selection_expression",
1322       "description" : "safe_member_selection_expression",
1323       "prefix" : "safe_member",
1324       "fields" : [
1325         { "field_name" : "object" },
1326         { "field_name" : "operator" },
1327         { "field_name" : "name" }
1328       ] },
1329     { "kind_name" : "EmbeddedMemberSelectionExpression",
1330       "type_name" : "embedded_member_selection_expression",
1331       "description" : "embedded_member_selection_expression",
1332       "prefix" : "embedded_member",
1333       "fields" : [
1334         { "field_name" : "object" },
1335         { "field_name" : "operator" },
1336         { "field_name" : "name" }
1337       ] },
1338     { "kind_name" : "YieldExpression",
1339       "type_name" : "yield_expression",
1340       "description" : "yield_expression",
1341       "prefix" : "yield",
1342       "fields" : [
1343         { "field_name" : "keyword" },
1344         { "field_name" : "operand" }
1345       ] },
1346     { "kind_name" : "YieldFromExpression",
1347       "type_name" : "yield_from_expression",
1348       "description" : "yield_from_expression",
1349       "prefix" : "yield_from",
1350       "fields" : [
1351         { "field_name" : "yield_keyword" },
1352         { "field_name" : "from_keyword" },
1353         { "field_name" : "operand" }
1354       ] },
1355     { "kind_name" : "PrefixUnaryExpression",
1356       "type_name" : "prefix_unary_expression",
1357       "description" : "prefix_unary_expression",
1358       "prefix" : "prefix_unary",
1359       "fields" : [
1360         { "field_name" : "operator" },
1361         { "field_name" : "operand" }
1362       ] },
1363     { "kind_name" : "PostfixUnaryExpression",
1364       "type_name" : "postfix_unary_expression",
1365       "description" : "postfix_unary_expression",
1366       "prefix" : "postfix_unary",
1367       "fields" : [
1368         { "field_name" : "operand" },
1369         { "field_name" : "operator" }
1370       ] },
1371     { "kind_name" : "BinaryExpression",
1372       "type_name" : "binary_expression",
1373       "description" : "binary_expression",
1374       "prefix" : "binary",
1375       "fields" : [
1376         { "field_name" : "left_operand" },
1377         { "field_name" : "operator" },
1378         { "field_name" : "right_operand" }
1379       ] },
1380     { "kind_name" : "InstanceofExpression",
1381       "type_name" : "instanceof_expression",
1382       "description" : "instanceof_expression",
1383       "prefix" : "instanceof",
1384       "fields" : [
1385         { "field_name" : "left_operand" },
1386         { "field_name" : "operator" },
1387         { "field_name" : "right_operand" }
1388       ] },
1389     { "kind_name" : "IsExpression",
1390       "type_name" : "is_expression",
1391       "description" : "is_expression",
1392       "prefix" : "is",
1393       "fields" : [
1394         { "field_name" : "left_operand" },
1395         { "field_name" : "operator" },
1396         { "field_name" : "right_operand" }
1397       ] },
1398     { "kind_name" : "ConditionalExpression",
1399       "type_name" : "conditional_expression",
1400       "description" : "conditional_expression",
1401       "prefix" : "conditional",
1402       "fields" : [
1403         { "field_name" : "test" },
1404         { "field_name" : "question" },
1405         { "field_name" : "consequence" },
1406         { "field_name" : "colon" },
1407         { "field_name" : "alternative" }
1408       ] },
1409     { "kind_name" : "EvalExpression",
1410       "type_name" : "eval_expression",
1411       "description" : "eval_expression",
1412       "prefix" : "eval",
1413       "fields" : [
1414         { "field_name" : "keyword" },
1415         { "field_name" : "left_paren" },
1416         { "field_name" : "argument" },
1417         { "field_name" : "right_paren" }
1418       ] },
1419     { "kind_name" : "EmptyExpression",
1420       "type_name" : "empty_expression",
1421       "description" : "empty_expression",
1422       "prefix" : "empty",
1423       "fields" : [
1424         { "field_name" : "keyword" },
1425         { "field_name" : "left_paren" },
1426         { "field_name" : "argument" },
1427         { "field_name" : "right_paren" }
1428       ] },
1429     { "kind_name" : "DefineExpression",
1430       "type_name" : "define_expression",
1431       "description" : "define_expression",
1432       "prefix" : "define",
1433       "fields" : [
1434         { "field_name" : "keyword" },
1435         { "field_name" : "left_paren" },
1436         { "field_name" : "argument_list" },
1437         { "field_name" : "right_paren" }
1438       ] },
1439     { "kind_name" : "HaltCompilerExpression",
1440       "type_name" : "halt_compiler_expression",
1441       "description" : "halt_compiler_expression",
1442       "prefix" : "halt_compiler",
1443       "fields" : [
1444         { "field_name" : "keyword" },
1445         { "field_name" : "left_paren" },
1446         { "field_name" : "argument_list" },
1447         { "field_name" : "right_paren" }
1448       ] },
1449     { "kind_name" : "IssetExpression",
1450       "type_name" : "isset_expression",
1451       "description" : "isset_expression",
1452       "prefix" : "isset",
1453       "fields" : [
1454         { "field_name" : "keyword" },
1455         { "field_name" : "left_paren" },
1456         { "field_name" : "argument_list" },
1457         { "field_name" : "right_paren" }
1458       ] },
1459     { "kind_name" : "FunctionCallExpression",
1460       "type_name" : "function_call_expression",
1461       "description" : "function_call_expression",
1462       "prefix" : "function_call",
1463       "fields" : [
1464         { "field_name" : "receiver" },
1465         { "field_name" : "left_paren" },
1466         { "field_name" : "argument_list" },
1467         { "field_name" : "right_paren" }
1468       ] },
1469     { "kind_name" : "FunctionCallWithTypeArgumentsExpression",
1470       "type_name" : "function_call_with_type_arguments_expression",
1471       "description" : "function_call_with_type_arguments_expression",
1472       "prefix" : "function_call_with_type_arguments",
1473       "fields" : [
1474         { "field_name" : "receiver" },
1475         { "field_name" : "type_args" },
1476         { "field_name" : "left_paren" },
1477         { "field_name" : "argument_list" },
1478         { "field_name" : "right_paren" }
1479       ] },
1480     { "kind_name" : "ParenthesizedExpression",
1481       "type_name" : "parenthesized_expression",
1482       "description" : "parenthesized_expression",
1483       "prefix" : "parenthesized_expression",
1484       "fields" : [
1485         { "field_name" : "left_paren" },
1486         { "field_name" : "expression" },
1487         { "field_name" : "right_paren" }
1488       ] },
1489     { "kind_name" : "BracedExpression",
1490       "type_name" : "braced_expression",
1491       "description" : "braced_expression",
1492       "prefix" : "braced_expression",
1493       "fields" : [
1494         { "field_name" : "left_brace" },
1495         { "field_name" : "expression" },
1496         { "field_name" : "right_brace" }
1497       ] },
1498     { "kind_name" : "EmbeddedBracedExpression",
1499       "type_name" : "embedded_braced_expression",
1500       "description" : "embedded_braced_expression",
1501       "prefix" : "embedded_braced_expression",
1502       "fields" : [
1503         { "field_name" : "left_brace" },
1504         { "field_name" : "expression" },
1505         { "field_name" : "right_brace" }
1506       ] },
1507     { "kind_name" : "ListExpression",
1508       "type_name" : "list_expression",
1509       "description" : "list_expression",
1510       "prefix" : "list",
1511       "fields" : [
1512         { "field_name" : "keyword" },
1513         { "field_name" : "left_paren" },
1514         { "field_name" : "members" },
1515         { "field_name" : "right_paren" }
1516       ] },
1517     { "kind_name" : "CollectionLiteralExpression",
1518       "type_name" : "collection_literal_expression",
1519       "description" : "collection_literal_expression",
1520       "prefix" : "collection_literal",
1521       "fields" : [
1522         { "field_name" : "name" },
1523         { "field_name" : "left_brace" },
1524         { "field_name" : "initializers" },
1525         { "field_name" : "right_brace" }
1526       ] },
1527     { "kind_name" : "ObjectCreationExpression",
1528       "type_name" : "object_creation_expression",
1529       "description" : "object_creation_expression",
1530       "prefix" : "object_creation",
1531       "fields" : [
1532         { "field_name" : "new_keyword" },
1533         { "field_name" : "object" }
1534       ] },
1535     { "kind_name" : "ConstructorCall",
1536       "type_name" : "constructor_call",
1537       "description" : "constructor_call",
1538       "prefix" : "constructor_call",
1539       "fields" : [
1540         { "field_name" : "type" },
1541         { "field_name" : "left_paren" },
1542         { "field_name" : "argument_list" },
1543         { "field_name" : "right_paren" }
1544       ] },
1545     { "kind_name" : "ArrayCreationExpression",
1546       "type_name" : "array_creation_expression",
1547       "description" : "array_creation_expression",
1548       "prefix" : "array_creation",
1549       "fields" : [
1550         { "field_name" : "left_bracket" },
1551         { "field_name" : "members" },
1552         { "field_name" : "right_bracket" }
1553       ] },
1554     { "kind_name" : "ArrayIntrinsicExpression",
1555       "type_name" : "array_intrinsic_expression",
1556       "description" : "array_intrinsic_expression",
1557       "prefix" : "array_intrinsic",
1558       "fields" : [
1559         { "field_name" : "keyword" },
1560         { "field_name" : "left_paren" },
1561         { "field_name" : "members" },
1562         { "field_name" : "right_paren" }
1563       ] },
1564     { "kind_name" : "DarrayIntrinsicExpression",
1565       "type_name" : "darray_intrinsic_expression",
1566       "description" : "darray_intrinsic_expression",
1567       "prefix" : "darray_intrinsic",
1568       "fields" : [
1569         { "field_name" : "keyword" },
1570         { "field_name" : "left_bracket" },
1571         { "field_name" : "members" },
1572         { "field_name" : "right_bracket" }
1573       ] },
1574     { "kind_name" : "DictionaryIntrinsicExpression",
1575       "type_name" : "dictionary_intrinsic_expression",
1576       "description" : "dictionary_intrinsic_expression",
1577       "prefix" : "dictionary_intrinsic",
1578       "fields" : [
1579         { "field_name" : "keyword" },
1580         { "field_name" : "left_bracket" },
1581         { "field_name" : "members" },
1582         { "field_name" : "right_bracket" }
1583       ] },
1584     { "kind_name" : "KeysetIntrinsicExpression",
1585       "type_name" : "keyset_intrinsic_expression",
1586       "description" : "keyset_intrinsic_expression",
1587       "prefix" : "keyset_intrinsic",
1588       "fields" : [
1589         { "field_name" : "keyword" },
1590         { "field_name" : "left_bracket" },
1591         { "field_name" : "members" },
1592         { "field_name" : "right_bracket" }
1593       ] },
1594     { "kind_name" : "VarrayIntrinsicExpression",
1595       "type_name" : "varray_intrinsic_expression",
1596       "description" : "varray_intrinsic_expression",
1597       "prefix" : "varray_intrinsic",
1598       "fields" : [
1599         { "field_name" : "keyword" },
1600         { "field_name" : "left_bracket" },
1601         { "field_name" : "members" },
1602         { "field_name" : "right_bracket" }
1603       ] },
1604     { "kind_name" : "VectorIntrinsicExpression",
1605       "type_name" : "vector_intrinsic_expression",
1606       "description" : "vector_intrinsic_expression",
1607       "prefix" : "vector_intrinsic",
1608       "fields" : [
1609         { "field_name" : "keyword" },
1610         { "field_name" : "left_bracket" },
1611         { "field_name" : "members" },
1612         { "field_name" : "right_bracket" }
1613       ] },
1614     { "kind_name" : "ElementInitializer",
1615       "type_name" : "element_initializer",
1616       "description" : "element_initializer",
1617       "prefix" : "element",
1618       "fields" : [
1619         { "field_name" : "key" },
1620         { "field_name" : "arrow" },
1621         { "field_name" : "value" }
1622       ] },
1623     { "kind_name" : "SubscriptExpression",
1624       "type_name" : "subscript_expression",
1625       "description" : "subscript_expression",
1626       "prefix" : "subscript",
1627       "fields" : [
1628         { "field_name" : "receiver" },
1629         { "field_name" : "left_bracket" },
1630         { "field_name" : "index" },
1631         { "field_name" : "right_bracket" }
1632       ] },
1633     { "kind_name" : "EmbeddedSubscriptExpression",
1634       "type_name" : "embedded_subscript_expression",
1635       "description" : "embedded_subscript_expression",
1636       "prefix" : "embedded_subscript",
1637       "fields" : [
1638         { "field_name" : "receiver" },
1639         { "field_name" : "left_bracket" },
1640         { "field_name" : "index" },
1641         { "field_name" : "right_bracket" }
1642       ] },
1643     { "kind_name" : "AwaitableCreationExpression",
1644       "type_name" : "awaitable_creation_expression",
1645       "description" : "awaitable_creation_expression",
1646       "prefix" : "awaitable",
1647       "fields" : [
1648         { "field_name" : "async" },
1649         { "field_name" : "coroutine" },
1650         { "field_name" : "compound_statement" }
1651       ] },
1652     { "kind_name" : "XHPChildrenDeclaration",
1653       "type_name" : "xhp_children_declaration",
1654       "description" : "xhp_children_declaration",
1655       "prefix" : "xhp_children",
1656       "fields" : [
1657         { "field_name" : "keyword" },
1658         { "field_name" : "expression" },
1659         { "field_name" : "semicolon" }
1660       ] },
1661     { "kind_name" : "XHPChildrenParenthesizedList",
1662       "type_name" : "xhp_children_parenthesized_list",
1663       "description" : "xhp_children_parenthesized_list",
1664       "prefix" : "xhp_children_list",
1665       "fields" : [
1666         { "field_name" : "left_paren" },
1667         { "field_name" : "xhp_children" },
1668         { "field_name" : "right_paren" }
1669       ] },
1670     { "kind_name" : "XHPCategoryDeclaration",
1671       "type_name" : "xhp_category_declaration",
1672       "description" : "xhp_category_declaration",
1673       "prefix" : "xhp_category",
1674       "fields" : [
1675         { "field_name" : "keyword" },
1676         { "field_name" : "categories" },
1677         { "field_name" : "semicolon" }
1678       ] },
1679     { "kind_name" : "XHPEnumType",
1680       "type_name" : "xhp_enum_type",
1681       "description" : "xhp_enum_type",
1682       "prefix" : "xhp_enum",
1683       "fields" : [
1684         { "field_name" : "optional" },
1685         { "field_name" : "keyword" },
1686         { "field_name" : "left_brace" },
1687         { "field_name" : "values" },
1688         { "field_name" : "right_brace" }
1689       ] },
1690     { "kind_name" : "XHPRequired",
1691       "type_name" : "xhp_required",
1692       "description" : "xhp_required",
1693       "prefix" : "xhp_required",
1694       "fields" : [
1695         { "field_name" : "at" },
1696         { "field_name" : "keyword" }
1697       ] },
1698     { "kind_name" : "XHPClassAttributeDeclaration",
1699       "type_name" : "xhp_class_attribute_declaration",
1700       "description" : "xhp_class_attribute_declaration",
1701       "prefix" : "xhp_attribute",
1702       "fields" : [
1703         { "field_name" : "keyword" },
1704         { "field_name" : "attributes" },
1705         { "field_name" : "semicolon" }
1706       ] },
1707     { "kind_name" : "XHPClassAttribute",
1708       "type_name" : "xhp_class_attribute",
1709       "description" : "xhp_class_attribute",
1710       "prefix" : "xhp_attribute_decl",
1711       "fields" : [
1712         { "field_name" : "type" },
1713         { "field_name" : "name" },
1714         { "field_name" : "initializer" },
1715         { "field_name" : "required" }
1716       ] },
1717     { "kind_name" : "XHPSimpleClassAttribute",
1718       "type_name" : "xhp_simple_class_attribute",
1719       "description" : "xhp_simple_class_attribute",
1720       "prefix" : "xhp_simple_class_attribute",
1721       "fields" : [
1722         { "field_name" : "type" }
1723       ] },
1724     { "kind_name" : "XHPSimpleAttribute",
1725       "type_name" : "xhp_simple_attribute",
1726       "description" : "xhp_simple_attribute",
1727       "prefix" : "xhp_simple_attribute",
1728       "fields" : [
1729         { "field_name" : "name" },
1730         { "field_name" : "equal" },
1731         { "field_name" : "expression" }
1732       ] },
1733     { "kind_name" : "XHPSpreadAttribute",
1734       "type_name" : "xhp_spread_attribute",
1735       "description" : "xhp_spread_attribute",
1736       "prefix" : "xhp_spread_attribute",
1737       "fields" : [
1738         { "field_name" : "left_brace" },
1739         { "field_name" : "spread_operator" },
1740         { "field_name" : "expression" },
1741         { "field_name" : "right_brace" }
1742       ] },
1743     { "kind_name" : "XHPOpen",
1744       "type_name" : "xhp_open",
1745       "description" : "xhp_open",
1746       "prefix" : "xhp_open",
1747       "fields" : [
1748         { "field_name" : "left_angle" },
1749         { "field_name" : "name" },
1750         { "field_name" : "attributes" },
1751         { "field_name" : "right_angle" }
1752       ] },
1753     { "kind_name" : "XHPExpression",
1754       "type_name" : "xhp_expression",
1755       "description" : "xhp_expression",
1756       "prefix" : "xhp",
1757       "fields" : [
1758         { "field_name" : "open" },
1759         { "field_name" : "body" },
1760         { "field_name" : "close" }
1761       ] },
1762     { "kind_name" : "XHPClose",
1763       "type_name" : "xhp_close",
1764       "description" : "xhp_close",
1765       "prefix" : "xhp_close",
1766       "fields" : [
1767         { "field_name" : "left_angle" },
1768         { "field_name" : "name" },
1769         { "field_name" : "right_angle" }
1770       ] },
1771     { "kind_name" : "TypeConstant",
1772       "type_name" : "type_constant",
1773       "description" : "type_constant",
1774       "prefix" : "type_constant",
1775       "fields" : [
1776         { "field_name" : "left_type" },
1777         { "field_name" : "separator" },
1778         { "field_name" : "right_type" }
1779       ] },
1780     { "kind_name" : "VectorTypeSpecifier",
1781       "type_name" : "vector_type_specifier",
1782       "description" : "vector_type_specifier",
1783       "prefix" : "vector_type",
1784       "fields" : [
1785         { "field_name" : "keyword" },
1786         { "field_name" : "left_angle" },
1787         { "field_name" : "type" },
1788         { "field_name" : "trailing_comma" },
1789         { "field_name" : "right_angle" }
1790       ] },
1791     { "kind_name" : "KeysetTypeSpecifier",
1792       "type_name" : "keyset_type_specifier",
1793       "description" : "keyset_type_specifier",
1794       "prefix" : "keyset_type",
1795       "fields" : [
1796         { "field_name" : "keyword" },
1797         { "field_name" : "left_angle" },
1798         { "field_name" : "type" },
1799         { "field_name" : "trailing_comma" },
1800         { "field_name" : "right_angle" }
1801       ] },
1802     { "kind_name" : "TupleTypeExplicitSpecifier",
1803       "type_name" : "tuple_type_explicit_specifier",
1804       "description" : "tuple_type_explicit_specifier",
1805       "prefix" : "tuple_type",
1806       "fields" : [
1807         { "field_name" : "keyword" },
1808         { "field_name" : "left_angle" },
1809         { "field_name" : "types" },
1810         { "field_name" : "right_angle" }
1811       ] },
1812     { "kind_name" : "VarrayTypeSpecifier",
1813       "type_name" : "varray_type_specifier",
1814       "description" : "varray_type_specifier",
1815       "prefix" : "varray",
1816       "fields" : [
1817         { "field_name" : "keyword" },
1818         { "field_name" : "left_angle" },
1819         { "field_name" : "type" },
1820         { "field_name" : "trailing_comma" },
1821         { "field_name" : "right_angle" }
1822       ] },
1823     { "kind_name" : "VectorArrayTypeSpecifier",
1824       "type_name" : "vector_array_type_specifier",
1825       "description" : "vector_array_type_specifier",
1826       "prefix" : "vector_array",
1827       "fields" : [
1828         { "field_name" : "keyword" },
1829         { "field_name" : "left_angle" },
1830         { "field_name" : "type" },
1831         { "field_name" : "right_angle" }
1832       ] },
1833     { "kind_name" : "TypeParameter",
1834       "type_name" : "type_parameter",
1835       "description" : "type_parameter",
1836       "prefix" : "type",
1837       "fields" : [
1838         { "field_name" : "variance" },
1839         { "field_name" : "name" },
1840         { "field_name" : "constraints" }
1841       ] },
1842     { "kind_name" : "TypeConstraint",
1843       "type_name" : "type_constraint",
1844       "description" : "type_constraint",
1845       "prefix" : "constraint",
1846       "fields" : [
1847         { "field_name" : "keyword" },
1848         { "field_name" : "type" }
1849       ] },
1850     { "kind_name" : "DarrayTypeSpecifier",
1851       "type_name" : "darray_type_specifier",
1852       "description" : "darray_type_specifier",
1853       "prefix" : "darray",
1854       "fields" : [
1855         { "field_name" : "keyword" },
1856         { "field_name" : "left_angle" },
1857         { "field_name" : "key" },
1858         { "field_name" : "comma" },
1859         { "field_name" : "value" },
1860         { "field_name" : "trailing_comma" },
1861         { "field_name" : "right_angle" }
1862       ] },
1863     { "kind_name" : "MapArrayTypeSpecifier",
1864       "type_name" : "map_array_type_specifier",
1865       "description" : "map_array_type_specifier",
1866       "prefix" : "map_array",
1867       "fields" : [
1868         { "field_name" : "keyword" },
1869         { "field_name" : "left_angle" },
1870         { "field_name" : "key" },
1871         { "field_name" : "comma" },
1872         { "field_name" : "value" },
1873         { "field_name" : "right_angle" }
1874       ] },
1875     { "kind_name" : "DictionaryTypeSpecifier",
1876       "type_name" : "dictionary_type_specifier",
1877       "description" : "dictionary_type_specifier",
1878       "prefix" : "dictionary_type",
1879       "fields" : [
1880         { "field_name" : "keyword" },
1881         { "field_name" : "left_angle" },
1882         { "field_name" : "members" },
1883         { "field_name" : "right_angle" }
1884       ] },
1885     { "kind_name" : "ClosureTypeSpecifier",
1886       "type_name" : "closure_type_specifier",
1887       "description" : "closure_type_specifier",
1888       "prefix" : "closure",
1889       "fields" : [
1890         { "field_name" : "outer_left_paren" },
1891         { "field_name" : "coroutine" },
1892         { "field_name" : "function_keyword" },
1893         { "field_name" : "inner_left_paren" },
1894         { "field_name" : "parameter_list" },
1895         { "field_name" : "inner_right_paren" },
1896         { "field_name" : "colon" },
1897         { "field_name" : "return_type" },
1898         { "field_name" : "outer_right_paren" }
1899       ] },
1900     { "kind_name" : "ClosureParameterTypeSpecifier",
1901       "type_name" : "closure_parameter_type_specifier",
1902       "description" : "closure_parameter_type_specifier",
1903       "prefix" : "closure_parameter",
1904       "fields" : [
1905         { "field_name" : "call_convention" },
1906         { "field_name" : "type" }
1907       ] },
1908     { "kind_name" : "ClassnameTypeSpecifier",
1909       "type_name" : "classname_type_specifier",
1910       "description" : "classname_type_specifier",
1911       "prefix" : "classname",
1912       "fields" : [
1913         { "field_name" : "keyword" },
1914         { "field_name" : "left_angle" },
1915         { "field_name" : "type" },
1916         { "field_name" : "trailing_comma" },
1917         { "field_name" : "right_angle" }
1918       ] },
1919     { "kind_name" : "FieldSpecifier",
1920       "type_name" : "field_specifier",
1921       "description" : "field_specifier",
1922       "prefix" : "field",
1923       "fields" : [
1924         { "field_name" : "question" },
1925         { "field_name" : "name" },
1926         { "field_name" : "arrow" },
1927         { "field_name" : "type" }
1928       ] },
1929     { "kind_name" : "FieldInitializer",
1930       "type_name" : "field_initializer",
1931       "description" : "field_initializer",
1932       "prefix" : "field_initializer",
1933       "fields" : [
1934         { "field_name" : "name" },
1935         { "field_name" : "arrow" },
1936         { "field_name" : "value" }
1937       ] },
1938     { "kind_name" : "ShapeTypeSpecifier",
1939       "type_name" : "shape_type_specifier",
1940       "description" : "shape_type_specifier",
1941       "prefix" : "shape_type",
1942       "fields" : [
1943         { "field_name" : "keyword" },
1944         { "field_name" : "left_paren" },
1945         { "field_name" : "fields" },
1946         { "field_name" : "ellipsis" },
1947         { "field_name" : "right_paren" }
1948       ] },
1949     { "kind_name" : "ShapeExpression",
1950       "type_name" : "shape_expression",
1951       "description" : "shape_expression",
1952       "prefix" : "shape_expression",
1953       "fields" : [
1954         { "field_name" : "keyword" },
1955         { "field_name" : "left_paren" },
1956         { "field_name" : "fields" },
1957         { "field_name" : "right_paren" }
1958       ] },
1959     { "kind_name" : "TupleExpression",
1960       "type_name" : "tuple_expression",
1961       "description" : "tuple_expression",
1962       "prefix" : "tuple_expression",
1963       "fields" : [
1964         { "field_name" : "keyword" },
1965         { "field_name" : "left_paren" },
1966         { "field_name" : "items" },
1967         { "field_name" : "right_paren" }
1968       ] },
1969     { "kind_name" : "GenericTypeSpecifier",
1970       "type_name" : "generic_type_specifier",
1971       "description" : "generic_type_specifier",
1972       "prefix" : "generic",
1973       "fields" : [
1974         { "field_name" : "class_type" },
1975         { "field_name" : "argument_list" }
1976       ] },
1977     { "kind_name" : "NullableTypeSpecifier",
1978       "type_name" : "nullable_type_specifier",
1979       "description" : "nullable_type_specifier",
1980       "prefix" : "nullable",
1981       "fields" : [
1982         { "field_name" : "question" },
1983         { "field_name" : "type" }
1984       ] },
1985     { "kind_name" : "SoftTypeSpecifier",
1986       "type_name" : "soft_type_specifier",
1987       "description" : "soft_type_specifier",
1988       "prefix" : "soft",
1989       "fields" : [
1990         { "field_name" : "at" },
1991         { "field_name" : "type" }
1992       ] },
1993     { "kind_name" : "TypeArguments",
1994       "type_name" : "type_arguments",
1995       "description" : "type_arguments",
1996       "prefix" : "type_arguments",
1997       "fields" : [
1998         { "field_name" : "left_angle" },
1999         { "field_name" : "types" },
2000         { "field_name" : "right_angle" }
2001       ] },
2002     { "kind_name" : "TypeParameters",
2003       "type_name" : "type_parameters",
2004       "description" : "type_parameters",
2005       "prefix" : "type_parameters",
2006       "fields" : [
2007         { "field_name" : "left_angle" },
2008         { "field_name" : "parameters" },
2009         { "field_name" : "right_angle" }
2010       ] },
2011     { "kind_name" : "TupleTypeSpecifier",
2012       "type_name" : "tuple_type_specifier",
2013       "description" : "tuple_type_specifier",
2014       "prefix" : "tuple",
2015       "fields" : [
2016         { "field_name" : "left_paren" },
2017         { "field_name" : "types" },
2018         { "field_name" : "right_paren" }
2019       ] },
2020     { "kind_name" : "ErrorSyntax",
2021       "type_name" : "error",
2022       "description" : "error",
2023       "prefix" : "error",
2024       "fields" : [
2025         { "field_name" : "error" }
2026       ] },
2027     { "kind_name" : "ListItem",
2028       "type_name" : "list_item",
2029       "description" : "list_item",
2030       "prefix" : "list",
2031       "fields" : [
2032         { "field_name" : "item" },
2033         { "field_name" : "separator" }
2034       ] },
2036     { "kind_name" : "Token",
2037       "type_name" : "token",
2038       "description" : "token",
2039       "prefix" : "",
2040       "fields" : [
2041         { "field_name" : "leading" },
2042         { "field_name" : "trailing" } ] },
2043     { "kind_name" : "Missing",
2044       "type_name" : "missing",
2045       "description" : "missing",
2046       "prefix" : "",
2047       "fields" : [ ] },
2048     { "kind_name" : "SyntaxList",
2049       "type_name" : "syntax_list",
2050       "description" : "syntax_list",
2051       "prefix" : "",
2052       "fields" : [ ] } ] }