{
  "ExpressionStatement": ["Statement"],
  "BreakStatement":      ["Statement"],
  "ContinueStatement":   ["Statement"],
  "DebuggerStatement":   ["Statement"],
  "DoWhileStatement":    ["Statement", "Loop", "While", "Scopable"],
  "IfStatement":         ["Statement"],
  "ReturnStatement":     ["Statement"],
  "SwitchStatement":     ["Statement"],
  "ThrowStatement":      ["Statement"],
  "TryStatement":        ["Statement"],
  "WhileStatement":      ["Statement", "Loop", "While", "Scopable"],
  "WithStatement":       ["Statement"],
  "EmptyStatement":      ["Statement"],
  "LabeledStatement":    ["Statement"],
  "VariableDeclaration": ["Statement", "Declaration"],
  "ExportAllDeclaration":     ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
  "ExportDefaultDeclaration": ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
  "ExportNamedDeclaration":   ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
  "ImportDeclaration":   ["Statement", "Declaration", "ModuleDeclaration"],

  "ArrowFunctionExpression": ["Scopable", "Function", "Expression"],
  "FunctionDeclaration":     ["Scopable", "Function", "Statement", "Declaration"],
  "FunctionExpression":      ["Scopable", "Function", "Expression"],

  "ImportSpecifier": ["ModuleSpecifier"],
  "ExportSpecifier": ["ModuleSpecifier"],

  "BlockStatement": ["Scopable", "Statement"],
  "Program":        ["Scopable"],
  "CatchClause":    ["Scopable"],

  "LogicalExpression": ["Binary", "Expression"],
  "BinaryExpression":  ["Binary", "Expression"],

  "UnaryExpression": ["UnaryLike", "Expression"],
  "SpreadProperty":  ["UnaryLike"],
  "SpreadElement":   ["UnaryLike"],

  "ClassDeclaration": ["Scopable", "Class", "Statement", "Declaration"],
  "ClassExpression":  ["Scopable", "Class", "Expression"],

  "ForOfStatement": ["Scopable", "Statement", "For", "Loop"],
  "ForInStatement": ["Scopable", "Statement", "For", "Loop"],
  "ForStatement":   ["Scopable", "Statement", "For", "Loop"],

  "ObjectPattern":     ["Pattern"],
  "ArrayPattern":      ["Pattern"],
  "AssignmentPattern": ["Pattern"],

  "Property":   ["UserWhitespacable"],

  "ArrayExpression":           ["Expression"],
  "AssignmentExpression":      ["Expression"],
  "AwaitExpression":           ["Expression"],
  "CallExpression":            ["Expression"],
  "ComprehensionExpression":   ["Expression", "Scopable"],
  "ConditionalExpression":     ["Expression"],
  "DoExpression":              ["Expression"],
  "Identifier":                ["Expression"],
  "Literal":                   ["Expression"],
  "MemberExpression":          ["Expression"],
  "NewExpression":             ["Expression"],
  "ObjectExpression":          ["Expression"],
  "SequenceExpression":        ["Expression"],
  "TaggedTemplateExpression":  ["Expression"],
  "ThisExpression":            ["Expression"],
  "Super":                     ["Expression"],
  "UpdateExpression":          ["Expression"],
  "JSXEmptyExpression":        ["Expression"],
  "JSXMemberExpression":       ["Expression"],
  "YieldExpression":           ["Expression"],

  "AnyTypeAnnotation":           ["Flow"],
  "ArrayTypeAnnotation":         ["Flow"],
  "BooleanTypeAnnotation":       ["Flow"],
  "ClassImplements":             ["Flow"],
  "DeclareClass":                ["Flow"],
  "DeclareFunction":             ["Flow"],
  "DeclareModule":               ["Flow"],
  "DeclareVariable":             ["Flow"],
  "FunctionTypeAnnotation":      ["Flow"],
  "FunctionTypeParam":           ["Flow"],
  "GenericTypeAnnotation":       ["Flow"],
  "InterfaceExtends":            ["Flow"],
  "InterfaceDeclaration":        ["Flow"],
  "IntersectionTypeAnnotation":  ["Flow"],
  "NullableTypeAnnotation":      ["Flow"],
  "NumberTypeAnnotation":        ["Flow"],
  "StringLiteralTypeAnnotation": ["Flow"],
  "StringTypeAnnotation":        ["Flow"],
  "TupleTypeAnnotation":         ["Flow"],
  "TypeofTypeAnnotation":        ["Flow"],
  "TypeAlias":                   ["Flow"],
  "TypeAnnotation":              ["Flow"],
  "TypeCastExpression":          ["Flow"],
  "TypeParameterDeclaration":    ["Flow"],
  "TypeParameterInstantiation":  ["Flow"],
  "ObjectTypeAnnotation":        ["Flow"],
  "ObjectTypeCallProperty":      ["Flow"],
  "ObjectTypeIndexer":           ["Flow"],
  "ObjectTypeProperty":          ["Flow"],
  "QualifiedTypeIdentifier":     ["Flow"],
  "UnionTypeAnnotation":         ["Flow"],
  "VoidTypeAnnotation":          ["Flow"],

  "JSXAttribute":           ["JSX"],
  "JSXClosingElement":      ["JSX"],
  "JSXElement":             ["JSX", "Expression"],
  "JSXEmptyExpression":     ["JSX"],
  "JSXExpressionContainer": ["JSX"],
  "JSXIdentifier":          ["JSX"],
  "JSXMemberExpression":    ["JSX"],
  "JSXNamespacedName":      ["JSX"],
  "JSXOpeningElement":      ["JSX"],
  "JSXSpreadAttribute":     ["JSX"]
}
