{
  "ExpressionStatement":      ["Statement"],
  "DebuggerStatement":        ["Statement"],
  "IfStatement":              ["Statement"],
  "TryStatement":             ["Statement"],
  "WithStatement":            ["Statement"],
  "EmptyStatement":           ["Statement"],
  "LabeledStatement":         ["Statement"],
  "VariableDeclaration":      ["Statement", "Declaration"],

  "BreakStatement":           ["Statement", "Terminatorless", "CompletionStatement"],
  "ContinueStatement":        ["Statement", "Terminatorless", "CompletionStatement"],
  "ReturnStatement":          ["Statement", "Terminatorless", "CompletionStatement"],
  "ThrowStatement":           ["Statement", "Terminatorless", "CompletionStatement"],

  "DoWhileStatement":         ["Statement", "BlockParent", "Loop", "While", "Scopable"],
  "WhileStatement":           ["Statement", "BlockParent", "Loop", "While", "Scopable"],
  "SwitchStatement":          ["Statement", "BlockParent", "Scopable"],

  "ImportSpecifier":            ["ModuleSpecifier"],
  "ExportSpecifier":            ["ModuleSpecifier"],
  "ImportDefaultSpecifier":     ["ModuleSpecifier"],
  "ExportDefaultSpecifier":     ["ModuleSpecifier"],
  "ExportNamespaceSpecifier":   ["ModuleSpecifier"],
  "ExportDefaultFromSpecifier": ["ModuleSpecifier"],
  "ExportAllDeclaration":       ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
  "ExportDefaultDeclaration":   ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
  "ExportNamedDeclaration":     ["Statement", "Declaration", "ModuleDeclaration", "ExportDeclaration"],
  "ImportDeclaration":          ["Statement", "Declaration", "ModuleDeclaration"],

  "ArrowFunctionExpression": ["Scopable", "Function", "Func", "BlockParent", "FunctionParent", "Expression", "Pure"],
  "FunctionDeclaration":     ["Scopable", "Function", "Func", "BlockParent", "FunctionParent", "Statement", "Pure", "Declaration"],
  "FunctionExpression":      ["Scopable", "Function", "Func", "BlockParent", "FunctionParent", "Expression", "Pure"],

  "BlockStatement": ["Scopable", "BlockParent", "Block", "Statement"],
  "Program":        ["Scopable", "BlockParent", "Block", "FunctionParent"],
  "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", "BlockParent", "Loop", "ForXStatement"],
  "ForInStatement": ["Scopable", "Statement", "For", "BlockParent", "Loop", "ForXStatement"],
  "ForStatement":   ["Scopable", "Statement", "For", "BlockParent", "Loop"],

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

  "Property":   ["UserWhitespacable"],

  "AwaitExpression":           ["Expression", "Terminatorless"],
  "YieldExpression":           ["Expression", "Terminatorless"],

  "ArrayExpression":           ["Expression"],
  "AssignmentExpression":      ["Expression"],
  "CallExpression":            ["Expression"],
  "ComprehensionExpression":   ["Expression", "Scopable"],
  "ConditionalExpression":     ["Expression"],
  "DoExpression":              ["Expression"],
  "Identifier":                ["Expression"],
  "Literal":                   ["Expression", "Pure"],
  "MemberExpression":          ["Expression"],
  "MetaProperty":              ["Expression"],
  "NewExpression":             ["Expression"],
  "ObjectExpression":          ["Expression"],
  "ParenthesizedExpression":   ["Expression"],
  "SequenceExpression":        ["Expression"],
  "TaggedTemplateExpression":  ["Expression"],
  "ThisExpression":            ["Expression"],
  "Super":                     ["Expression"],
  "UpdateExpression":          ["Expression"],

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

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