### This file was autogenerated by GraphQL Nexus
### Do not make changes to this file directly

type ArrayTypeNode implements Node {
  elementType: Node!
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type BindingPattern implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type CallSignatureDeclaration implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type ClassDeclaration implements HasJSDoc & Node {
  end: Int!
  flags: NodeFlags!
  jsDoc: [JSDoc!]
  kind: SyntaxKind!
  kindCode: Int!
  members(only: [SyntaxKind!], skip: [SyntaxKind!]): [Node!]!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type ComputedPropertyName implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type ConditionalTypeNode implements Node {
  checkType: Node!
  end: Int!
  extendsType: Node!
  falseType: Node!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  trueType: Node!
  typeName: DeclarationName
}

type ConstructorDeclaration implements HasJSDoc & MaybeOptional & Node {
  asteriskToken: Token
  end: Int!
  exclamationToken: Token
  flags: NodeFlags!
  jsDoc: [JSDoc!]
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parameters: [ParameterDeclaration!]!
  parent: Node!
  pos: Int!
  questionToken: Token
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  type: Node
  typeName: DeclarationName
  typeParameters: [TypeParameterDeclaration!]
}

type ConstructorTypeNode implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  type: Node!
  typeName: DeclarationName
}

type ConstructSignatureDeclaration implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

union DeclarationName =
    BindingPattern
  | ComputedPropertyName
  | Identifier
  | NumericLiteral
  | QualifiedName
  | StringLiteralLike
  | UnnamedNode

type EnumDeclaration implements HasJSDoc & Node {
  end: Int!
  flags: NodeFlags!
  jsDoc: [JSDoc!]
  kind: SyntaxKind!
  kindCode: Int!
  members: [Node!]!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type ExportAssignment implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type ExportDeclaration implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type FunctionDeclaration implements HasJSDoc & MaybeOptional & Node {
  asteriskToken: Token
  end: Int!
  exclamationToken: Token
  flags: NodeFlags!
  jsDoc: [JSDoc!]
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parameters: [ParameterDeclaration!]!
  parent: Node!
  pos: Int!
  questionToken: Token
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  type: Node
  typeName: DeclarationName
  typeParameters: [TypeParameterDeclaration!]
}

type FunctionTypeNode implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  type: Node!
  typeName: DeclarationName
}

type GetAccessorDeclaration implements HasJSDoc & MaybeOptional & Node {
  asteriskToken: Token
  end: Int!
  exclamationToken: Token
  flags: NodeFlags!
  jsDoc: [JSDoc!]
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parameters: [ParameterDeclaration!]!
  parent: Node!
  pos: Int!
  questionToken: Token
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  type: Node
  typeName: DeclarationName
  typeParameters: [TypeParameterDeclaration!]
}

interface HasJSDoc {
  jsDoc: [JSDoc!]
}

type Identifier implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  text: String!
  typeName: DeclarationName
}

type ImportDeclaration implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type ImportEqualsDeclaration implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type ImportTypeNode implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type IndexedAccessTypeNode implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type IndexSignatureDeclaration implements HasJSDoc & Node {
  end: Int!
  flags: NodeFlags!
  jsDoc: [JSDoc!]
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type InferTypeNode implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
  typeParameter: Node!
}

type InterfaceDeclaration implements HasJSDoc & Node {
  end: Int!
  flags: NodeFlags!
  jsDoc: [JSDoc!]
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type IntersectionTypeNode implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
  types: [Node!]!
}

type JSDoc {
  comment: String
  tags: [JSDocTag!]
}

type JSDocAugmentsTag implements JSDocTag {
  comment: String
  tagName: String
}

type JSDocClassTag implements JSDocTag {
  comment: String
  tagName: String
}

type JSDocEnumTag implements JSDocTag {
  comment: String
  tagName: String
}

type JSDocNamespaceDeclaration implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type JSDocReturnTag implements JSDocTag {
  comment: String
  tagName: String
}

interface JSDocTag {
  comment: String
  tagName: String
}

type JSDocTemplateTag implements JSDocTag {
  comment: String
  tagName: String
}

type JSDocThisTag implements JSDocTag {
  comment: String
  tagName: String
}

type JSDocTypeTag implements JSDocTag {
  comment: String
  tagName: String
}

type JSDocUnknownTag implements JSDocTag {
  comment: String
  tagName: String
}

type KeywordTypeNode implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type LiteralType implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type MappedTypeNode implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

interface MaybeOptional {
  questionToken: Token
}

type MethodDeclaration implements HasJSDoc & MaybeOptional & Node {
  asteriskToken: Token
  end: Int!
  exclamationToken: Token
  flags: NodeFlags!
  jsDoc: [JSDoc!]
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parameters: [ParameterDeclaration!]!
  parent: Node!
  pos: Int!
  questionToken: Token
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  type: Node
  typeName: DeclarationName
  typeParameters: [TypeParameterDeclaration!]
}

type MissingDeclaration implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type ModuleDeclaration implements HasJSDoc & Node {
  end: Int!
  flags: NodeFlags!
  jsDoc: [JSDoc!]
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type NamespaceDeclaration implements HasJSDoc & Node {
  end: Int!
  flags: NodeFlags!
  jsDoc: [JSDoc!]
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type NamespaceExportDeclaration implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

interface Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

enum NodeFlags {
  Ambient
  AwaitContext
  BlockScoped
  Const
  ContainsThis
  ContextFlags
  DecoratorContext
  DisallowInContext
  ExportContext
  GlobalAugmentation
  HasAggregatedChildData
  HasAsyncFunctions
  HasExplicitReturn
  HasImplicitReturn
  InWithStatement
  JavaScriptFile
  JSDoc
  JsonFile
  Let
  Namespace
  NestedNamespace
  None
  PermanentlySetIncrementalFlags
  PossiblyContainsDynamicImport
  PossiblyContainsImportMeta
  ReachabilityAndEmitFlags
  ReachabilityCheckFlags
  Synthesized
  ThisNodeHasError
  ThisNodeOrAnySubNodesHasError
  TypeExcludesFlags
  UNKNOWN
  YieldContext
}

type NumericLiteral implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type OptionalTypeNode implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  type: Node!
  typeName: DeclarationName
}

type ParameterDeclaration implements HasJSDoc & Node {
  end: Int!
  flags: NodeFlags!
  jsDoc: [JSDoc!]
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  type: Node
  typeName: DeclarationName
}

type ParenthesizedType implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  type: Node!
  typeName: DeclarationName
}

type PropertyDeclaration implements HasJSDoc & MaybeOptional & Node {
  end: Int!
  flags: NodeFlags!
  jsDoc: [JSDoc!]
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  questionToken: Token
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type PropertyLikeDeclaration implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type PropertySignature implements HasJSDoc & MaybeOptional & Node {
  end: Int!
  flags: NodeFlags!
  jsDoc: [JSDoc!]
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  questionToken: Token
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  type: Node
  typeName: DeclarationName
}

type QualifiedName implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type Query {
  parseFile(file: String!): SourceFile!
}

type RestTypeNode implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  type: Node!
  typeName: DeclarationName
}

type SetAccessorDeclaration implements HasJSDoc & MaybeOptional & Node {
  asteriskToken: Token
  end: Int!
  exclamationToken: Token
  flags: NodeFlags!
  jsDoc: [JSDoc!]
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parameters: [ParameterDeclaration!]!
  parent: Node!
  pos: Int!
  questionToken: Token
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  type: Node
  typeName: DeclarationName
  typeParameters: [TypeParameterDeclaration!]
}

type SourceFile implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  statements(only: [SyntaxKind!], skip: [SyntaxKind!]): [Node!]!
  typeName: DeclarationName
}

type StringLiteral implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type StringLiteralLike implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

enum SyntaxKind {
  AbstractKeyword
  AmpersandAmpersandToken
  AmpersandEqualsToken
  AmpersandToken
  AnyKeyword
  ArrayBindingPattern
  ArrayLiteralExpression
  ArrayType
  ArrowFunction
  AsExpression
  AsKeyword
  AsteriskAsteriskEqualsToken
  AsteriskAsteriskToken
  AsteriskEqualsToken
  AsteriskToken
  AsyncKeyword
  AtToken
  AwaitExpression
  AwaitKeyword
  BacktickToken
  BarBarToken
  BarEqualsToken
  BarToken
  BigIntKeyword
  BigIntLiteral
  BinaryExpression
  BindingElement
  Block
  BooleanKeyword
  BreakKeyword
  BreakStatement
  Bundle
  CallExpression
  CallSignature
  CaretEqualsToken
  CaretToken
  CaseBlock
  CaseClause
  CaseKeyword
  CatchClause
  CatchKeyword
  ClassDeclaration
  ClassExpression
  ClassKeyword
  CloseBraceToken
  CloseBracketToken
  CloseParenToken
  ColonToken
  CommaListExpression
  CommaToken
  ComputedPropertyName
  ConditionalExpression
  ConditionalType
  ConflictMarkerTrivia
  ConstKeyword
  Constructor
  ConstructorKeyword
  ConstructorType
  ConstructSignature
  ContinueKeyword
  ContinueStatement
  Count
  DebuggerKeyword
  DebuggerStatement
  DeclareKeyword
  Decorator
  DefaultClause
  DefaultKeyword
  DeleteExpression
  DeleteKeyword
  DoKeyword
  DoStatement
  DotDotDotToken
  DotToken
  ElementAccessExpression
  ElseKeyword
  EmptyStatement
  EndOfDeclarationMarker
  EndOfFileToken
  EnumDeclaration
  EnumKeyword
  EnumMember
  EqualsEqualsEqualsToken
  EqualsEqualsToken
  EqualsGreaterThanToken
  EqualsToken
  ExclamationEqualsEqualsToken
  ExclamationEqualsToken
  ExclamationToken
  ExportAssignment
  ExportDeclaration
  ExportKeyword
  ExportSpecifier
  ExpressionStatement
  ExpressionWithTypeArguments
  ExtendsKeyword
  ExternalModuleReference
  FalseKeyword
  FinallyKeyword
  FirstAssignment
  FirstBinaryOperator
  FirstCompoundAssignment
  FirstContextualKeyword
  FirstFutureReservedWord
  FirstJSDocNode
  FirstJSDocTagNode
  FirstKeyword
  FirstLiteralToken
  FirstNode
  FirstPunctuation
  FirstReservedWord
  FirstTemplateToken
  FirstToken
  FirstTriviaToken
  FirstTypeNode
  ForInStatement
  ForKeyword
  ForOfStatement
  ForStatement
  FromKeyword
  FunctionDeclaration
  FunctionExpression
  FunctionKeyword
  FunctionType
  GetAccessor
  GetKeyword
  GlobalKeyword
  GreaterThanEqualsToken
  GreaterThanGreaterThanEqualsToken
  GreaterThanGreaterThanGreaterThanEqualsToken
  GreaterThanGreaterThanGreaterThanToken
  GreaterThanGreaterThanToken
  GreaterThanToken
  HeritageClause
  Identifier
  IfKeyword
  IfStatement
  ImplementsKeyword
  ImportClause
  ImportDeclaration
  ImportEqualsDeclaration
  ImportKeyword
  ImportSpecifier
  ImportType
  IndexedAccessType
  IndexSignature
  InferKeyword
  InferType
  InKeyword
  InputFiles
  InstanceOfKeyword
  InterfaceDeclaration
  InterfaceKeyword
  IntersectionType
  IsKeyword
  JSDocAllType
  JSDocAugmentsTag
  JSDocAuthorTag
  JSDocCallbackTag
  JSDocClassTag
  JSDocComment
  JSDocEnumTag
  JSDocFunctionType
  JSDocNamepathType
  JSDocNonNullableType
  JSDocNullableType
  JSDocOptionalType
  JSDocParameterTag
  JSDocPropertyTag
  JSDocReturnTag
  JSDocSignature
  JSDocTag
  JSDocTemplateTag
  JSDocThisTag
  JSDocTypedefTag
  JSDocTypeExpression
  JSDocTypeLiteral
  JSDocTypeTag
  JSDocUnknownType
  JSDocVariadicType
  JsxAttribute
  JsxAttributes
  JsxClosingElement
  JsxClosingFragment
  JsxElement
  JsxExpression
  JsxFragment
  JsxOpeningElement
  JsxOpeningFragment
  JsxSelfClosingElement
  JsxSpreadAttribute
  JsxText
  JsxTextAllWhiteSpaces
  KeyOfKeyword
  LabeledStatement
  LastAssignment
  LastBinaryOperator
  LastCompoundAssignment
  LastContextualKeyword
  LastFutureReservedWord
  LastJSDocNode
  LastJSDocTagNode
  LastKeyword
  LastLiteralToken
  LastPunctuation
  LastReservedWord
  LastTemplateToken
  LastToken
  LastTriviaToken
  LastTypeNode
  LessThanEqualsToken
  LessThanLessThanEqualsToken
  LessThanLessThanToken
  LessThanSlashToken
  LessThanToken
  LetKeyword
  LiteralType
  MappedType
  MergeDeclarationMarker
  MetaProperty
  MethodDeclaration
  MethodSignature
  MinusEqualsToken
  MinusMinusToken
  MinusToken
  MissingDeclaration
  ModuleBlock
  ModuleDeclaration
  ModuleKeyword
  MultiLineCommentTrivia
  NamedExports
  NamedImports
  NamespaceExportDeclaration
  NamespaceImport
  NamespaceKeyword
  NeverKeyword
  NewExpression
  NewKeyword
  NewLineTrivia
  NonNullExpression
  NoSubstitutionTemplateLiteral
  NotEmittedStatement
  NullKeyword
  NumberKeyword
  NumericLiteral
  ObjectBindingPattern
  ObjectKeyword
  ObjectLiteralExpression
  OfKeyword
  OmittedExpression
  OpenBraceToken
  OpenBracketToken
  OpenParenToken
  OptionalType
  PackageKeyword
  Parameter
  ParenthesizedExpression
  ParenthesizedType
  PartiallyEmittedExpression
  PercentEqualsToken
  PercentToken
  PlusEqualsToken
  PlusPlusToken
  PlusToken
  PostfixUnaryExpression
  PrefixUnaryExpression
  PrivateKeyword
  PropertyAccessExpression
  PropertyAssignment
  PropertyDeclaration
  PropertySignature
  ProtectedKeyword
  PublicKeyword
  QualifiedName
  QuestionToken
  ReadonlyKeyword
  RegularExpressionLiteral
  RequireKeyword
  RestType
  ReturnKeyword
  ReturnStatement
  SemicolonClassElement
  SemicolonToken
  SetAccessor
  SetKeyword
  ShebangTrivia
  ShorthandPropertyAssignment
  SingleLineCommentTrivia
  SlashEqualsToken
  SlashToken
  SourceFile
  SpreadAssignment
  SpreadElement
  StaticKeyword
  StringKeyword
  StringLiteral
  SuperKeyword
  SwitchKeyword
  SwitchStatement
  SymbolKeyword
  SyntaxList
  SyntheticExpression
  TaggedTemplateExpression
  TemplateExpression
  TemplateHead
  TemplateMiddle
  TemplateSpan
  TemplateTail
  ThisKeyword
  ThisType
  ThrowKeyword
  ThrowStatement
  TildeToken
  TrueKeyword
  TryKeyword
  TryStatement
  TupleType
  TypeAliasDeclaration
  TypeAssertionExpression
  TypeKeyword
  TypeLiteral
  TypeOfExpression
  TypeOfKeyword
  TypeOperator
  TypeParameter
  TypePredicate
  TypeQuery
  TypeReference
  UndefinedKeyword
  UnionType
  UniqueKeyword
  Unknown
  UnknownKeyword
  UnparsedInternalText
  UnparsedPrepend
  UnparsedPrologue
  UnparsedSource
  UnparsedSyntheticReference
  UnparsedText
  VariableDeclaration
  VariableDeclarationList
  VariableStatement
  VarKeyword
  VoidExpression
  VoidKeyword
  WhileKeyword
  WhileStatement
  WhitespaceTrivia
  WithKeyword
  WithStatement
  YieldExpression
  YieldKeyword
}

type ThisTypeNode implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type Token {
  kind: SyntaxKind!
}

type TupleTypeNode implements Node {
  elementTypes: [Node!]!
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type TypeAliasDeclaration implements HasJSDoc & Node {
  end: Int!
  flags: NodeFlags!
  jsDoc: [JSDoc!]
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  type: Node
  typeName: DeclarationName
  typeParameters: [TypeParameterDeclaration!]
}

type TypeLiteral implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type TypeParameterDeclaration implements Node {
  constraint: Node!
  default: Node!
  end: Int!
  expression: Node!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type TypeReference implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  text: String
  typeArguments: [Node!]
  typeName: DeclarationName
}

type UnionType implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
  types: [Node!]!
}

type UNKNOWN_NODE implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}

type UnnamedNode {
  text: String
}

type VariableDeclaration implements Node {
  end: Int!
  flags: NodeFlags!
  kind: SyntaxKind!
  kindCode: Int!
  modifiers(only: [SyntaxKind!], skip: [SyntaxKind!]): [Token!]
  name: DeclarationName
  nameText: String
  parent: Node!
  pos: Int!
  rawText(only: [SyntaxKind!], skip: [SyntaxKind!]): String!
  typeName: DeclarationName
}
