var _a;
// This file is auto-generated from the createTraversals.ts file. Do not modify contents
import ts from 'typescript';
export var guards = {
    isNumericLiteral: function (node) {
        return node.kind === ts.SyntaxKind.NumericLiteral;
    },
    isBigIntLiteral: function (node) {
        return node.kind === ts.SyntaxKind.BigIntLiteral;
    },
    isStringLiteral: function (node) {
        return node.kind === ts.SyntaxKind.StringLiteral;
    },
    isJsxText: function (node) {
        return node.kind === ts.SyntaxKind.JsxText;
    },
    isRegularExpressionLiteral: function (node) {
        return node.kind === ts.SyntaxKind.RegularExpressionLiteral;
    },
    isNoSubstitutionTemplateLiteral: function (node) {
        return node.kind === ts.SyntaxKind.NoSubstitutionTemplateLiteral;
    },
    isTemplateHead: function (node) {
        return node.kind === ts.SyntaxKind.TemplateHead;
    },
    isTemplateMiddle: function (node) {
        return node.kind === ts.SyntaxKind.TemplateMiddle;
    },
    isTemplateTail: function (node) {
        return node.kind === ts.SyntaxKind.TemplateTail;
    },
    isIdentifier: function (node) {
        return node.kind === ts.SyntaxKind.Identifier;
    },
    isPrivateIdentifier: function (node) {
        return node.kind === ts.SyntaxKind.PrivateIdentifier;
    },
    isFalseKeyword: function (node) {
        return node.kind === ts.SyntaxKind.FalseKeyword;
    },
    isImportKeyword: function (node) {
        return node.kind === ts.SyntaxKind.ImportKeyword;
    },
    isNullKeyword: function (node) {
        return node.kind === ts.SyntaxKind.NullKeyword;
    },
    isSuperKeyword: function (node) {
        return node.kind === ts.SyntaxKind.SuperKeyword;
    },
    isThisKeyword: function (node) {
        return node.kind === ts.SyntaxKind.ThisKeyword;
    },
    isTrueKeyword: function (node) {
        return node.kind === ts.SyntaxKind.TrueKeyword;
    },
    isQualifiedName: function (node) {
        return node.kind === ts.SyntaxKind.QualifiedName;
    },
    isComputedPropertyName: function (node) {
        return node.kind === ts.SyntaxKind.ComputedPropertyName;
    },
    isTypeParameter: function (node) {
        return node.kind === ts.SyntaxKind.TypeParameter;
    },
    isParameter: function (node) {
        return node.kind === ts.SyntaxKind.Parameter;
    },
    isDecorator: function (node) {
        return node.kind === ts.SyntaxKind.Decorator;
    },
    isPropertySignature: function (node) {
        return node.kind === ts.SyntaxKind.PropertySignature;
    },
    isPropertyDeclaration: function (node) {
        return node.kind === ts.SyntaxKind.PropertyDeclaration;
    },
    isMethodSignature: function (node) {
        return node.kind === ts.SyntaxKind.MethodSignature;
    },
    isMethodDeclaration: function (node) {
        return node.kind === ts.SyntaxKind.MethodDeclaration;
    },
    isConstructor: function (node) {
        return node.kind === ts.SyntaxKind.Constructor;
    },
    isGetAccessor: function (node) {
        return node.kind === ts.SyntaxKind.GetAccessor;
    },
    isSetAccessor: function (node) {
        return node.kind === ts.SyntaxKind.SetAccessor;
    },
    isCallSignature: function (node) {
        return node.kind === ts.SyntaxKind.CallSignature;
    },
    isConstructSignature: function (node) {
        return node.kind === ts.SyntaxKind.ConstructSignature;
    },
    isIndexSignature: function (node) {
        return node.kind === ts.SyntaxKind.IndexSignature;
    },
    isTypePredicate: function (node) {
        return node.kind === ts.SyntaxKind.TypePredicate;
    },
    isTypeReference: function (node) {
        return node.kind === ts.SyntaxKind.TypeReference;
    },
    isFunctionType: function (node) {
        return node.kind === ts.SyntaxKind.FunctionType;
    },
    isConstructorType: function (node) {
        return node.kind === ts.SyntaxKind.ConstructorType;
    },
    isTypeQuery: function (node) {
        return node.kind === ts.SyntaxKind.TypeQuery;
    },
    isTypeLiteral: function (node) {
        return node.kind === ts.SyntaxKind.TypeLiteral;
    },
    isArrayType: function (node) {
        return node.kind === ts.SyntaxKind.ArrayType;
    },
    isTupleType: function (node) {
        return node.kind === ts.SyntaxKind.TupleType;
    },
    isOptionalType: function (node) {
        return node.kind === ts.SyntaxKind.OptionalType;
    },
    isRestType: function (node) {
        return node.kind === ts.SyntaxKind.RestType;
    },
    isUnionType: function (node) {
        return node.kind === ts.SyntaxKind.UnionType;
    },
    isIntersectionType: function (node) {
        return node.kind === ts.SyntaxKind.IntersectionType;
    },
    isConditionalType: function (node) {
        return node.kind === ts.SyntaxKind.ConditionalType;
    },
    isInferType: function (node) {
        return node.kind === ts.SyntaxKind.InferType;
    },
    isParenthesizedType: function (node) {
        return node.kind === ts.SyntaxKind.ParenthesizedType;
    },
    isThisType: function (node) {
        return node.kind === ts.SyntaxKind.ThisType;
    },
    isTypeOperator: function (node) {
        return node.kind === ts.SyntaxKind.TypeOperator;
    },
    isIndexedAccessType: function (node) {
        return node.kind === ts.SyntaxKind.IndexedAccessType;
    },
    isMappedType: function (node) {
        return node.kind === ts.SyntaxKind.MappedType;
    },
    isLiteralType: function (node) {
        return node.kind === ts.SyntaxKind.LiteralType;
    },
    isNamedTupleMember: function (node) {
        return node.kind === ts.SyntaxKind.NamedTupleMember;
    },
    isTemplateLiteralType: function (node) {
        return node.kind === ts.SyntaxKind.TemplateLiteralType;
    },
    isTemplateLiteralTypeSpan: function (node) {
        return node.kind === ts.SyntaxKind.TemplateLiteralTypeSpan;
    },
    isImportType: function (node) {
        return node.kind === ts.SyntaxKind.ImportType;
    },
    isObjectBindingPattern: function (node) {
        return node.kind === ts.SyntaxKind.ObjectBindingPattern;
    },
    isArrayBindingPattern: function (node) {
        return node.kind === ts.SyntaxKind.ArrayBindingPattern;
    },
    isBindingElement: function (node) {
        return node.kind === ts.SyntaxKind.BindingElement;
    },
    isArrayLiteralExpression: function (node) {
        return node.kind === ts.SyntaxKind.ArrayLiteralExpression;
    },
    isObjectLiteralExpression: function (node) {
        return node.kind === ts.SyntaxKind.ObjectLiteralExpression;
    },
    isPropertyAccessExpression: function (node) {
        return node.kind === ts.SyntaxKind.PropertyAccessExpression;
    },
    isElementAccessExpression: function (node) {
        return node.kind === ts.SyntaxKind.ElementAccessExpression;
    },
    isCallExpression: function (node) {
        return node.kind === ts.SyntaxKind.CallExpression;
    },
    isNewExpression: function (node) {
        return node.kind === ts.SyntaxKind.NewExpression;
    },
    isTaggedTemplateExpression: function (node) {
        return node.kind === ts.SyntaxKind.TaggedTemplateExpression;
    },
    isTypeAssertionExpression: function (node) {
        return node.kind === ts.SyntaxKind.TypeAssertionExpression;
    },
    isParenthesizedExpression: function (node) {
        return node.kind === ts.SyntaxKind.ParenthesizedExpression;
    },
    isFunctionExpression: function (node) {
        return node.kind === ts.SyntaxKind.FunctionExpression;
    },
    isArrowFunction: function (node) {
        return node.kind === ts.SyntaxKind.ArrowFunction;
    },
    isDeleteExpression: function (node) {
        return node.kind === ts.SyntaxKind.DeleteExpression;
    },
    isTypeOfExpression: function (node) {
        return node.kind === ts.SyntaxKind.TypeOfExpression;
    },
    isVoidExpression: function (node) {
        return node.kind === ts.SyntaxKind.VoidExpression;
    },
    isAwaitExpression: function (node) {
        return node.kind === ts.SyntaxKind.AwaitExpression;
    },
    isPrefixUnaryExpression: function (node) {
        return node.kind === ts.SyntaxKind.PrefixUnaryExpression;
    },
    isPostfixUnaryExpression: function (node) {
        return node.kind === ts.SyntaxKind.PostfixUnaryExpression;
    },
    isBinaryExpression: function (node) {
        return node.kind === ts.SyntaxKind.BinaryExpression;
    },
    isConditionalExpression: function (node) {
        return node.kind === ts.SyntaxKind.ConditionalExpression;
    },
    isTemplateExpression: function (node) {
        return node.kind === ts.SyntaxKind.TemplateExpression;
    },
    isYieldExpression: function (node) {
        return node.kind === ts.SyntaxKind.YieldExpression;
    },
    isSpreadElement: function (node) {
        return node.kind === ts.SyntaxKind.SpreadElement;
    },
    isClassExpression: function (node) {
        return node.kind === ts.SyntaxKind.ClassExpression;
    },
    isOmittedExpression: function (node) {
        return node.kind === ts.SyntaxKind.OmittedExpression;
    },
    isExpressionWithTypeArguments: function (node) {
        return node.kind === ts.SyntaxKind.ExpressionWithTypeArguments;
    },
    isAsExpression: function (node) {
        return node.kind === ts.SyntaxKind.AsExpression;
    },
    isNonNullExpression: function (node) {
        return node.kind === ts.SyntaxKind.NonNullExpression;
    },
    isMetaProperty: function (node) {
        return node.kind === ts.SyntaxKind.MetaProperty;
    },
    isSyntheticExpression: function (node) {
        return node.kind === ts.SyntaxKind.SyntheticExpression;
    },
    isTemplateSpan: function (node) {
        return node.kind === ts.SyntaxKind.TemplateSpan;
    },
    isSemicolonClassElement: function (node) {
        return node.kind === ts.SyntaxKind.SemicolonClassElement;
    },
    isBlock: function (node) {
        return node.kind === ts.SyntaxKind.Block;
    },
    isEmptyStatement: function (node) {
        return node.kind === ts.SyntaxKind.EmptyStatement;
    },
    isVariableStatement: function (node) {
        return node.kind === ts.SyntaxKind.VariableStatement;
    },
    isExpressionStatement: function (node) {
        return node.kind === ts.SyntaxKind.ExpressionStatement;
    },
    isIfStatement: function (node) {
        return node.kind === ts.SyntaxKind.IfStatement;
    },
    isDoStatement: function (node) {
        return node.kind === ts.SyntaxKind.DoStatement;
    },
    isWhileStatement: function (node) {
        return node.kind === ts.SyntaxKind.WhileStatement;
    },
    isForStatement: function (node) {
        return node.kind === ts.SyntaxKind.ForStatement;
    },
    isForInStatement: function (node) {
        return node.kind === ts.SyntaxKind.ForInStatement;
    },
    isForOfStatement: function (node) {
        return node.kind === ts.SyntaxKind.ForOfStatement;
    },
    isContinueStatement: function (node) {
        return node.kind === ts.SyntaxKind.ContinueStatement;
    },
    isBreakStatement: function (node) {
        return node.kind === ts.SyntaxKind.BreakStatement;
    },
    isReturnStatement: function (node) {
        return node.kind === ts.SyntaxKind.ReturnStatement;
    },
    isWithStatement: function (node) {
        return node.kind === ts.SyntaxKind.WithStatement;
    },
    isSwitchStatement: function (node) {
        return node.kind === ts.SyntaxKind.SwitchStatement;
    },
    isLabeledStatement: function (node) {
        return node.kind === ts.SyntaxKind.LabeledStatement;
    },
    isThrowStatement: function (node) {
        return node.kind === ts.SyntaxKind.ThrowStatement;
    },
    isTryStatement: function (node) {
        return node.kind === ts.SyntaxKind.TryStatement;
    },
    isDebuggerStatement: function (node) {
        return node.kind === ts.SyntaxKind.DebuggerStatement;
    },
    isVariableDeclaration: function (node) {
        return node.kind === ts.SyntaxKind.VariableDeclaration;
    },
    isVariableDeclarationList: function (node) {
        return node.kind === ts.SyntaxKind.VariableDeclarationList;
    },
    isFunctionDeclaration: function (node) {
        return node.kind === ts.SyntaxKind.FunctionDeclaration;
    },
    isClassDeclaration: function (node) {
        return node.kind === ts.SyntaxKind.ClassDeclaration;
    },
    isInterfaceDeclaration: function (node) {
        return node.kind === ts.SyntaxKind.InterfaceDeclaration;
    },
    isTypeAliasDeclaration: function (node) {
        return node.kind === ts.SyntaxKind.TypeAliasDeclaration;
    },
    isEnumDeclaration: function (node) {
        return node.kind === ts.SyntaxKind.EnumDeclaration;
    },
    isModuleDeclaration: function (node) {
        return node.kind === ts.SyntaxKind.ModuleDeclaration;
    },
    isModuleBlock: function (node) {
        return node.kind === ts.SyntaxKind.ModuleBlock;
    },
    isCaseBlock: function (node) {
        return node.kind === ts.SyntaxKind.CaseBlock;
    },
    isNamespaceExportDeclaration: function (node) {
        return node.kind === ts.SyntaxKind.NamespaceExportDeclaration;
    },
    isImportEqualsDeclaration: function (node) {
        return node.kind === ts.SyntaxKind.ImportEqualsDeclaration;
    },
    isImportDeclaration: function (node) {
        return node.kind === ts.SyntaxKind.ImportDeclaration;
    },
    isImportClause: function (node) {
        return node.kind === ts.SyntaxKind.ImportClause;
    },
    isNamespaceImport: function (node) {
        return node.kind === ts.SyntaxKind.NamespaceImport;
    },
    isNamedImports: function (node) {
        return node.kind === ts.SyntaxKind.NamedImports;
    },
    isImportSpecifier: function (node) {
        return node.kind === ts.SyntaxKind.ImportSpecifier;
    },
    isExportAssignment: function (node) {
        return node.kind === ts.SyntaxKind.ExportAssignment;
    },
    isExportDeclaration: function (node) {
        return node.kind === ts.SyntaxKind.ExportDeclaration;
    },
    isNamedExports: function (node) {
        return node.kind === ts.SyntaxKind.NamedExports;
    },
    isNamespaceExport: function (node) {
        return node.kind === ts.SyntaxKind.NamespaceExport;
    },
    isExportSpecifier: function (node) {
        return node.kind === ts.SyntaxKind.ExportSpecifier;
    },
    isMissingDeclaration: function (node) {
        return node.kind === ts.SyntaxKind.MissingDeclaration;
    },
    isExternalModuleReference: function (node) {
        return node.kind === ts.SyntaxKind.ExternalModuleReference;
    },
    isJsxElement: function (node) {
        return node.kind === ts.SyntaxKind.JsxElement;
    },
    isJsxSelfClosingElement: function (node) {
        return node.kind === ts.SyntaxKind.JsxSelfClosingElement;
    },
    isJsxOpeningElement: function (node) {
        return node.kind === ts.SyntaxKind.JsxOpeningElement;
    },
    isJsxClosingElement: function (node) {
        return node.kind === ts.SyntaxKind.JsxClosingElement;
    },
    isJsxFragment: function (node) {
        return node.kind === ts.SyntaxKind.JsxFragment;
    },
    isJsxOpeningFragment: function (node) {
        return node.kind === ts.SyntaxKind.JsxOpeningFragment;
    },
    isJsxClosingFragment: function (node) {
        return node.kind === ts.SyntaxKind.JsxClosingFragment;
    },
    isJsxAttribute: function (node) {
        return node.kind === ts.SyntaxKind.JsxAttribute;
    },
    isJsxAttributes: function (node) {
        return node.kind === ts.SyntaxKind.JsxAttributes;
    },
    isJsxSpreadAttribute: function (node) {
        return node.kind === ts.SyntaxKind.JsxSpreadAttribute;
    },
    isJsxExpression: function (node) {
        return node.kind === ts.SyntaxKind.JsxExpression;
    },
    isCaseClause: function (node) {
        return node.kind === ts.SyntaxKind.CaseClause;
    },
    isDefaultClause: function (node) {
        return node.kind === ts.SyntaxKind.DefaultClause;
    },
    isHeritageClause: function (node) {
        return node.kind === ts.SyntaxKind.HeritageClause;
    },
    isCatchClause: function (node) {
        return node.kind === ts.SyntaxKind.CatchClause;
    },
    isPropertyAssignment: function (node) {
        return node.kind === ts.SyntaxKind.PropertyAssignment;
    },
    isShorthandPropertyAssignment: function (node) {
        return node.kind === ts.SyntaxKind.ShorthandPropertyAssignment;
    },
    isSpreadAssignment: function (node) {
        return node.kind === ts.SyntaxKind.SpreadAssignment;
    },
    isEnumMember: function (node) {
        return node.kind === ts.SyntaxKind.EnumMember;
    },
    isUnparsedPrologue: function (node) {
        return node.kind === ts.SyntaxKind.UnparsedPrologue;
    },
    isUnparsedPrepend: function (node) {
        return node.kind === ts.SyntaxKind.UnparsedPrepend;
    },
    isUnparsedSyntheticReference: function (node) {
        return node.kind === ts.SyntaxKind.UnparsedSyntheticReference;
    },
    isSourceFile: function (node) {
        return node.kind === ts.SyntaxKind.SourceFile;
    },
    isBundle: function (node) {
        return node.kind === ts.SyntaxKind.Bundle;
    },
    isUnparsedSource: function (node) {
        return node.kind === ts.SyntaxKind.UnparsedSource;
    },
    isInputFiles: function (node) {
        return node.kind === ts.SyntaxKind.InputFiles;
    },
    isJSDocTypeExpression: function (node) {
        return node.kind === ts.SyntaxKind.JSDocTypeExpression;
    },
    isJSDocNameReference: function (node) {
        return node.kind === ts.SyntaxKind.JSDocNameReference;
    },
    isJSDocAllType: function (node) {
        return node.kind === ts.SyntaxKind.JSDocAllType;
    },
    isJSDocUnknownType: function (node) {
        return node.kind === ts.SyntaxKind.JSDocUnknownType;
    },
    isJSDocNullableType: function (node) {
        return node.kind === ts.SyntaxKind.JSDocNullableType;
    },
    isJSDocNonNullableType: function (node) {
        return node.kind === ts.SyntaxKind.JSDocNonNullableType;
    },
    isJSDocOptionalType: function (node) {
        return node.kind === ts.SyntaxKind.JSDocOptionalType;
    },
    isJSDocFunctionType: function (node) {
        return node.kind === ts.SyntaxKind.JSDocFunctionType;
    },
    isJSDocVariadicType: function (node) {
        return node.kind === ts.SyntaxKind.JSDocVariadicType;
    },
    isJSDocNamepathType: function (node) {
        return node.kind === ts.SyntaxKind.JSDocNamepathType;
    },
    isJSDocComment: function (node) {
        return node.kind === ts.SyntaxKind.JSDocComment;
    },
    isJSDocTypeLiteral: function (node) {
        return node.kind === ts.SyntaxKind.JSDocTypeLiteral;
    },
    isJSDocSignature: function (node) {
        return node.kind === ts.SyntaxKind.JSDocSignature;
    },
    isJSDocTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocTag;
    },
    isJSDocAugmentsTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocAugmentsTag;
    },
    isJSDocImplementsTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocImplementsTag;
    },
    isJSDocAuthorTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocAuthorTag;
    },
    isJSDocDeprecatedTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocDeprecatedTag;
    },
    isJSDocClassTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocClassTag;
    },
    isJSDocPublicTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocPublicTag;
    },
    isJSDocPrivateTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocPrivateTag;
    },
    isJSDocProtectedTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocProtectedTag;
    },
    isJSDocReadonlyTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocReadonlyTag;
    },
    isJSDocCallbackTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocCallbackTag;
    },
    isJSDocEnumTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocEnumTag;
    },
    isJSDocParameterTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocParameterTag;
    },
    isJSDocReturnTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocReturnTag;
    },
    isJSDocThisTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocThisTag;
    },
    isJSDocTypeTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocTypeTag;
    },
    isJSDocTemplateTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocTemplateTag;
    },
    isJSDocTypedefTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocTypedefTag;
    },
    isJSDocSeeTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocSeeTag;
    },
    isJSDocPropertyTag: function (node) {
        return node.kind === ts.SyntaxKind.JSDocPropertyTag;
    },
    isSyntaxList: function (node) {
        return node.kind === ts.SyntaxKind.SyntaxList;
    },
    isNotEmittedStatement: function (node) {
        return node.kind === ts.SyntaxKind.NotEmittedStatement;
    },
    isPartiallyEmittedExpression: function (node) {
        return node.kind === ts.SyntaxKind.PartiallyEmittedExpression;
    },
    isCommaListExpression: function (node) {
        return node.kind === ts.SyntaxKind.CommaListExpression;
    },
};
export var kindsMap = {
    NumericLiteral: {},
    BigIntLiteral: {},
    StringLiteral: {},
    JsxText: {},
    RegularExpressionLiteral: {},
    NoSubstitutionTemplateLiteral: {},
    TemplateHead: {},
    TemplateMiddle: {},
    TemplateTail: {},
    Identifier: {},
    PrivateIdentifier: {},
    FalseKeyword: {},
    ImportKeyword: {},
    NullKeyword: {},
    SuperKeyword: {},
    ThisKeyword: {},
    TrueKeyword: {},
    QualifiedName: {},
    ComputedPropertyName: {},
    TypeParameter: {},
    Parameter: {},
    Decorator: {},
    PropertySignature: {},
    PropertyDeclaration: {},
    MethodSignature: {},
    MethodDeclaration: {},
    Constructor: {},
    GetAccessor: {},
    SetAccessor: {},
    CallSignature: {},
    ConstructSignature: {},
    IndexSignature: {},
    TypePredicate: {},
    TypeReference: {},
    FunctionType: {},
    ConstructorType: {},
    TypeQuery: {},
    TypeLiteral: {},
    ArrayType: {},
    TupleType: {},
    OptionalType: {},
    RestType: {},
    UnionType: {},
    IntersectionType: {},
    ConditionalType: {},
    InferType: {},
    ParenthesizedType: {},
    ThisType: {},
    TypeOperator: {},
    IndexedAccessType: {},
    MappedType: {},
    LiteralType: {},
    NamedTupleMember: {},
    TemplateLiteralType: {},
    TemplateLiteralTypeSpan: {},
    ImportType: {},
    ObjectBindingPattern: {},
    ArrayBindingPattern: {},
    BindingElement: {},
    ArrayLiteralExpression: {},
    ObjectLiteralExpression: {},
    PropertyAccessExpression: {},
    ElementAccessExpression: {},
    CallExpression: {},
    NewExpression: {},
    TaggedTemplateExpression: {},
    TypeAssertionExpression: {},
    ParenthesizedExpression: {},
    FunctionExpression: {},
    ArrowFunction: {},
    DeleteExpression: {},
    TypeOfExpression: {},
    VoidExpression: {},
    AwaitExpression: {},
    PrefixUnaryExpression: {},
    PostfixUnaryExpression: {},
    BinaryExpression: {},
    ConditionalExpression: {},
    TemplateExpression: {},
    YieldExpression: {},
    SpreadElement: {},
    ClassExpression: {},
    OmittedExpression: {},
    ExpressionWithTypeArguments: {},
    AsExpression: {},
    NonNullExpression: {},
    MetaProperty: {},
    SyntheticExpression: {},
    TemplateSpan: {},
    SemicolonClassElement: {},
    Block: {},
    EmptyStatement: {},
    VariableStatement: {},
    ExpressionStatement: {},
    IfStatement: {},
    DoStatement: {},
    WhileStatement: {},
    ForStatement: {},
    ForInStatement: {},
    ForOfStatement: {},
    ContinueStatement: {},
    BreakStatement: {},
    ReturnStatement: {},
    WithStatement: {},
    SwitchStatement: {},
    LabeledStatement: {},
    ThrowStatement: {},
    TryStatement: {},
    DebuggerStatement: {},
    VariableDeclaration: {},
    VariableDeclarationList: {},
    FunctionDeclaration: {},
    ClassDeclaration: {},
    InterfaceDeclaration: {},
    TypeAliasDeclaration: {},
    EnumDeclaration: {},
    ModuleDeclaration: {},
    ModuleBlock: {},
    CaseBlock: {},
    NamespaceExportDeclaration: {},
    ImportEqualsDeclaration: {},
    ImportDeclaration: {},
    ImportClause: {},
    NamespaceImport: {},
    NamedImports: {},
    ImportSpecifier: {},
    ExportAssignment: {},
    ExportDeclaration: {},
    NamedExports: {},
    NamespaceExport: {},
    ExportSpecifier: {},
    MissingDeclaration: {},
    ExternalModuleReference: {},
    JsxElement: {},
    JsxSelfClosingElement: {},
    JsxOpeningElement: {},
    JsxClosingElement: {},
    JsxFragment: {},
    JsxOpeningFragment: {},
    JsxClosingFragment: {},
    JsxAttribute: {},
    JsxAttributes: {},
    JsxSpreadAttribute: {},
    JsxExpression: {},
    CaseClause: {},
    DefaultClause: {},
    HeritageClause: {},
    CatchClause: {},
    PropertyAssignment: {},
    ShorthandPropertyAssignment: {},
    SpreadAssignment: {},
    EnumMember: {},
    UnparsedPrologue: {},
    UnparsedPrepend: {},
    UnparsedSyntheticReference: {},
    SourceFile: {},
    Bundle: {},
    UnparsedSource: {},
    InputFiles: {},
    JSDocTypeExpression: {},
    JSDocNameReference: {},
    JSDocAllType: {},
    JSDocUnknownType: {},
    JSDocNullableType: {},
    JSDocNonNullableType: {},
    JSDocOptionalType: {},
    JSDocFunctionType: {},
    JSDocVariadicType: {},
    JSDocNamepathType: {},
    JSDocComment: {},
    JSDocTypeLiteral: {},
    JSDocSignature: {},
    JSDocTag: {},
    JSDocAugmentsTag: {},
    JSDocImplementsTag: {},
    JSDocAuthorTag: {},
    JSDocDeprecatedTag: {},
    JSDocClassTag: {},
    JSDocPublicTag: {},
    JSDocPrivateTag: {},
    JSDocProtectedTag: {},
    JSDocReadonlyTag: {},
    JSDocCallbackTag: {},
    JSDocEnumTag: {},
    JSDocParameterTag: {},
    JSDocReturnTag: {},
    JSDocThisTag: {},
    JSDocTypeTag: {},
    JSDocTemplateTag: {},
    JSDocTypedefTag: {},
    JSDocSeeTag: {},
    JSDocPropertyTag: {},
    SyntaxList: {},
    NotEmittedStatement: {},
    PartiallyEmittedExpression: {},
    CommaListExpression: {},
};
var kindToString = (_a = {},
    _a[ts.SyntaxKind.NumericLiteral] = 'NumericLiteral',
    _a[ts.SyntaxKind.BigIntLiteral] = 'BigIntLiteral',
    _a[ts.SyntaxKind.StringLiteral] = 'StringLiteral',
    _a[ts.SyntaxKind.JsxText] = 'JsxText',
    _a[ts.SyntaxKind.RegularExpressionLiteral] = 'RegularExpressionLiteral',
    _a[ts.SyntaxKind.NoSubstitutionTemplateLiteral] = 'NoSubstitutionTemplateLiteral',
    _a[ts.SyntaxKind.TemplateHead] = 'TemplateHead',
    _a[ts.SyntaxKind.TemplateMiddle] = 'TemplateMiddle',
    _a[ts.SyntaxKind.TemplateTail] = 'TemplateTail',
    _a[ts.SyntaxKind.Identifier] = 'Identifier',
    _a[ts.SyntaxKind.PrivateIdentifier] = 'PrivateIdentifier',
    _a[ts.SyntaxKind.FalseKeyword] = 'FalseKeyword',
    _a[ts.SyntaxKind.ImportKeyword] = 'ImportKeyword',
    _a[ts.SyntaxKind.NullKeyword] = 'NullKeyword',
    _a[ts.SyntaxKind.SuperKeyword] = 'SuperKeyword',
    _a[ts.SyntaxKind.ThisKeyword] = 'ThisKeyword',
    _a[ts.SyntaxKind.TrueKeyword] = 'TrueKeyword',
    _a[ts.SyntaxKind.QualifiedName] = 'QualifiedName',
    _a[ts.SyntaxKind.ComputedPropertyName] = 'ComputedPropertyName',
    _a[ts.SyntaxKind.TypeParameter] = 'TypeParameter',
    _a[ts.SyntaxKind.Parameter] = 'Parameter',
    _a[ts.SyntaxKind.Decorator] = 'Decorator',
    _a[ts.SyntaxKind.PropertySignature] = 'PropertySignature',
    _a[ts.SyntaxKind.PropertyDeclaration] = 'PropertyDeclaration',
    _a[ts.SyntaxKind.MethodSignature] = 'MethodSignature',
    _a[ts.SyntaxKind.MethodDeclaration] = 'MethodDeclaration',
    _a[ts.SyntaxKind.Constructor] = 'Constructor',
    _a[ts.SyntaxKind.GetAccessor] = 'GetAccessor',
    _a[ts.SyntaxKind.SetAccessor] = 'SetAccessor',
    _a[ts.SyntaxKind.CallSignature] = 'CallSignature',
    _a[ts.SyntaxKind.ConstructSignature] = 'ConstructSignature',
    _a[ts.SyntaxKind.IndexSignature] = 'IndexSignature',
    _a[ts.SyntaxKind.TypePredicate] = 'TypePredicate',
    _a[ts.SyntaxKind.TypeReference] = 'TypeReference',
    _a[ts.SyntaxKind.FunctionType] = 'FunctionType',
    _a[ts.SyntaxKind.ConstructorType] = 'ConstructorType',
    _a[ts.SyntaxKind.TypeQuery] = 'TypeQuery',
    _a[ts.SyntaxKind.TypeLiteral] = 'TypeLiteral',
    _a[ts.SyntaxKind.ArrayType] = 'ArrayType',
    _a[ts.SyntaxKind.TupleType] = 'TupleType',
    _a[ts.SyntaxKind.OptionalType] = 'OptionalType',
    _a[ts.SyntaxKind.RestType] = 'RestType',
    _a[ts.SyntaxKind.UnionType] = 'UnionType',
    _a[ts.SyntaxKind.IntersectionType] = 'IntersectionType',
    _a[ts.SyntaxKind.ConditionalType] = 'ConditionalType',
    _a[ts.SyntaxKind.InferType] = 'InferType',
    _a[ts.SyntaxKind.ParenthesizedType] = 'ParenthesizedType',
    _a[ts.SyntaxKind.ThisType] = 'ThisType',
    _a[ts.SyntaxKind.TypeOperator] = 'TypeOperator',
    _a[ts.SyntaxKind.IndexedAccessType] = 'IndexedAccessType',
    _a[ts.SyntaxKind.MappedType] = 'MappedType',
    _a[ts.SyntaxKind.LiteralType] = 'LiteralType',
    _a[ts.SyntaxKind.NamedTupleMember] = 'NamedTupleMember',
    _a[ts.SyntaxKind.TemplateLiteralType] = 'TemplateLiteralType',
    _a[ts.SyntaxKind.TemplateLiteralTypeSpan] = 'TemplateLiteralTypeSpan',
    _a[ts.SyntaxKind.ImportType] = 'ImportType',
    _a[ts.SyntaxKind.ObjectBindingPattern] = 'ObjectBindingPattern',
    _a[ts.SyntaxKind.ArrayBindingPattern] = 'ArrayBindingPattern',
    _a[ts.SyntaxKind.BindingElement] = 'BindingElement',
    _a[ts.SyntaxKind.ArrayLiteralExpression] = 'ArrayLiteralExpression',
    _a[ts.SyntaxKind.ObjectLiteralExpression] = 'ObjectLiteralExpression',
    _a[ts.SyntaxKind.PropertyAccessExpression] = 'PropertyAccessExpression',
    _a[ts.SyntaxKind.ElementAccessExpression] = 'ElementAccessExpression',
    _a[ts.SyntaxKind.CallExpression] = 'CallExpression',
    _a[ts.SyntaxKind.NewExpression] = 'NewExpression',
    _a[ts.SyntaxKind.TaggedTemplateExpression] = 'TaggedTemplateExpression',
    _a[ts.SyntaxKind.TypeAssertionExpression] = 'TypeAssertionExpression',
    _a[ts.SyntaxKind.ParenthesizedExpression] = 'ParenthesizedExpression',
    _a[ts.SyntaxKind.FunctionExpression] = 'FunctionExpression',
    _a[ts.SyntaxKind.ArrowFunction] = 'ArrowFunction',
    _a[ts.SyntaxKind.DeleteExpression] = 'DeleteExpression',
    _a[ts.SyntaxKind.TypeOfExpression] = 'TypeOfExpression',
    _a[ts.SyntaxKind.VoidExpression] = 'VoidExpression',
    _a[ts.SyntaxKind.AwaitExpression] = 'AwaitExpression',
    _a[ts.SyntaxKind.PrefixUnaryExpression] = 'PrefixUnaryExpression',
    _a[ts.SyntaxKind.PostfixUnaryExpression] = 'PostfixUnaryExpression',
    _a[ts.SyntaxKind.BinaryExpression] = 'BinaryExpression',
    _a[ts.SyntaxKind.ConditionalExpression] = 'ConditionalExpression',
    _a[ts.SyntaxKind.TemplateExpression] = 'TemplateExpression',
    _a[ts.SyntaxKind.YieldExpression] = 'YieldExpression',
    _a[ts.SyntaxKind.SpreadElement] = 'SpreadElement',
    _a[ts.SyntaxKind.ClassExpression] = 'ClassExpression',
    _a[ts.SyntaxKind.OmittedExpression] = 'OmittedExpression',
    _a[ts.SyntaxKind.ExpressionWithTypeArguments] = 'ExpressionWithTypeArguments',
    _a[ts.SyntaxKind.AsExpression] = 'AsExpression',
    _a[ts.SyntaxKind.NonNullExpression] = 'NonNullExpression',
    _a[ts.SyntaxKind.MetaProperty] = 'MetaProperty',
    _a[ts.SyntaxKind.SyntheticExpression] = 'SyntheticExpression',
    _a[ts.SyntaxKind.TemplateSpan] = 'TemplateSpan',
    _a[ts.SyntaxKind.SemicolonClassElement] = 'SemicolonClassElement',
    _a[ts.SyntaxKind.Block] = 'Block',
    _a[ts.SyntaxKind.EmptyStatement] = 'EmptyStatement',
    _a[ts.SyntaxKind.VariableStatement] = 'VariableStatement',
    _a[ts.SyntaxKind.ExpressionStatement] = 'ExpressionStatement',
    _a[ts.SyntaxKind.IfStatement] = 'IfStatement',
    _a[ts.SyntaxKind.DoStatement] = 'DoStatement',
    _a[ts.SyntaxKind.WhileStatement] = 'WhileStatement',
    _a[ts.SyntaxKind.ForStatement] = 'ForStatement',
    _a[ts.SyntaxKind.ForInStatement] = 'ForInStatement',
    _a[ts.SyntaxKind.ForOfStatement] = 'ForOfStatement',
    _a[ts.SyntaxKind.ContinueStatement] = 'ContinueStatement',
    _a[ts.SyntaxKind.BreakStatement] = 'BreakStatement',
    _a[ts.SyntaxKind.ReturnStatement] = 'ReturnStatement',
    _a[ts.SyntaxKind.WithStatement] = 'WithStatement',
    _a[ts.SyntaxKind.SwitchStatement] = 'SwitchStatement',
    _a[ts.SyntaxKind.LabeledStatement] = 'LabeledStatement',
    _a[ts.SyntaxKind.ThrowStatement] = 'ThrowStatement',
    _a[ts.SyntaxKind.TryStatement] = 'TryStatement',
    _a[ts.SyntaxKind.DebuggerStatement] = 'DebuggerStatement',
    _a[ts.SyntaxKind.VariableDeclaration] = 'VariableDeclaration',
    _a[ts.SyntaxKind.VariableDeclarationList] = 'VariableDeclarationList',
    _a[ts.SyntaxKind.FunctionDeclaration] = 'FunctionDeclaration',
    _a[ts.SyntaxKind.ClassDeclaration] = 'ClassDeclaration',
    _a[ts.SyntaxKind.InterfaceDeclaration] = 'InterfaceDeclaration',
    _a[ts.SyntaxKind.TypeAliasDeclaration] = 'TypeAliasDeclaration',
    _a[ts.SyntaxKind.EnumDeclaration] = 'EnumDeclaration',
    _a[ts.SyntaxKind.ModuleDeclaration] = 'ModuleDeclaration',
    _a[ts.SyntaxKind.ModuleBlock] = 'ModuleBlock',
    _a[ts.SyntaxKind.CaseBlock] = 'CaseBlock',
    _a[ts.SyntaxKind.NamespaceExportDeclaration] = 'NamespaceExportDeclaration',
    _a[ts.SyntaxKind.ImportEqualsDeclaration] = 'ImportEqualsDeclaration',
    _a[ts.SyntaxKind.ImportDeclaration] = 'ImportDeclaration',
    _a[ts.SyntaxKind.ImportClause] = 'ImportClause',
    _a[ts.SyntaxKind.NamespaceImport] = 'NamespaceImport',
    _a[ts.SyntaxKind.NamedImports] = 'NamedImports',
    _a[ts.SyntaxKind.ImportSpecifier] = 'ImportSpecifier',
    _a[ts.SyntaxKind.ExportAssignment] = 'ExportAssignment',
    _a[ts.SyntaxKind.ExportDeclaration] = 'ExportDeclaration',
    _a[ts.SyntaxKind.NamedExports] = 'NamedExports',
    _a[ts.SyntaxKind.NamespaceExport] = 'NamespaceExport',
    _a[ts.SyntaxKind.ExportSpecifier] = 'ExportSpecifier',
    _a[ts.SyntaxKind.MissingDeclaration] = 'MissingDeclaration',
    _a[ts.SyntaxKind.ExternalModuleReference] = 'ExternalModuleReference',
    _a[ts.SyntaxKind.JsxElement] = 'JsxElement',
    _a[ts.SyntaxKind.JsxSelfClosingElement] = 'JsxSelfClosingElement',
    _a[ts.SyntaxKind.JsxOpeningElement] = 'JsxOpeningElement',
    _a[ts.SyntaxKind.JsxClosingElement] = 'JsxClosingElement',
    _a[ts.SyntaxKind.JsxFragment] = 'JsxFragment',
    _a[ts.SyntaxKind.JsxOpeningFragment] = 'JsxOpeningFragment',
    _a[ts.SyntaxKind.JsxClosingFragment] = 'JsxClosingFragment',
    _a[ts.SyntaxKind.JsxAttribute] = 'JsxAttribute',
    _a[ts.SyntaxKind.JsxAttributes] = 'JsxAttributes',
    _a[ts.SyntaxKind.JsxSpreadAttribute] = 'JsxSpreadAttribute',
    _a[ts.SyntaxKind.JsxExpression] = 'JsxExpression',
    _a[ts.SyntaxKind.CaseClause] = 'CaseClause',
    _a[ts.SyntaxKind.DefaultClause] = 'DefaultClause',
    _a[ts.SyntaxKind.HeritageClause] = 'HeritageClause',
    _a[ts.SyntaxKind.CatchClause] = 'CatchClause',
    _a[ts.SyntaxKind.PropertyAssignment] = 'PropertyAssignment',
    _a[ts.SyntaxKind.ShorthandPropertyAssignment] = 'ShorthandPropertyAssignment',
    _a[ts.SyntaxKind.SpreadAssignment] = 'SpreadAssignment',
    _a[ts.SyntaxKind.EnumMember] = 'EnumMember',
    _a[ts.SyntaxKind.UnparsedPrologue] = 'UnparsedPrologue',
    _a[ts.SyntaxKind.UnparsedPrepend] = 'UnparsedPrepend',
    _a[ts.SyntaxKind.UnparsedSyntheticReference] = 'UnparsedSyntheticReference',
    _a[ts.SyntaxKind.SourceFile] = 'SourceFile',
    _a[ts.SyntaxKind.Bundle] = 'Bundle',
    _a[ts.SyntaxKind.UnparsedSource] = 'UnparsedSource',
    _a[ts.SyntaxKind.InputFiles] = 'InputFiles',
    _a[ts.SyntaxKind.JSDocTypeExpression] = 'JSDocTypeExpression',
    _a[ts.SyntaxKind.JSDocNameReference] = 'JSDocNameReference',
    _a[ts.SyntaxKind.JSDocAllType] = 'JSDocAllType',
    _a[ts.SyntaxKind.JSDocUnknownType] = 'JSDocUnknownType',
    _a[ts.SyntaxKind.JSDocNullableType] = 'JSDocNullableType',
    _a[ts.SyntaxKind.JSDocNonNullableType] = 'JSDocNonNullableType',
    _a[ts.SyntaxKind.JSDocOptionalType] = 'JSDocOptionalType',
    _a[ts.SyntaxKind.JSDocFunctionType] = 'JSDocFunctionType',
    _a[ts.SyntaxKind.JSDocVariadicType] = 'JSDocVariadicType',
    _a[ts.SyntaxKind.JSDocNamepathType] = 'JSDocNamepathType',
    _a[ts.SyntaxKind.JSDocComment] = 'JSDocComment',
    _a[ts.SyntaxKind.JSDocTypeLiteral] = 'JSDocTypeLiteral',
    _a[ts.SyntaxKind.JSDocSignature] = 'JSDocSignature',
    _a[ts.SyntaxKind.JSDocTag] = 'JSDocTag',
    _a[ts.SyntaxKind.JSDocAugmentsTag] = 'JSDocAugmentsTag',
    _a[ts.SyntaxKind.JSDocImplementsTag] = 'JSDocImplementsTag',
    _a[ts.SyntaxKind.JSDocAuthorTag] = 'JSDocAuthorTag',
    _a[ts.SyntaxKind.JSDocDeprecatedTag] = 'JSDocDeprecatedTag',
    _a[ts.SyntaxKind.JSDocClassTag] = 'JSDocClassTag',
    _a[ts.SyntaxKind.JSDocPublicTag] = 'JSDocPublicTag',
    _a[ts.SyntaxKind.JSDocPrivateTag] = 'JSDocPrivateTag',
    _a[ts.SyntaxKind.JSDocProtectedTag] = 'JSDocProtectedTag',
    _a[ts.SyntaxKind.JSDocReadonlyTag] = 'JSDocReadonlyTag',
    _a[ts.SyntaxKind.JSDocCallbackTag] = 'JSDocCallbackTag',
    _a[ts.SyntaxKind.JSDocEnumTag] = 'JSDocEnumTag',
    _a[ts.SyntaxKind.JSDocParameterTag] = 'JSDocParameterTag',
    _a[ts.SyntaxKind.JSDocReturnTag] = 'JSDocReturnTag',
    _a[ts.SyntaxKind.JSDocThisTag] = 'JSDocThisTag',
    _a[ts.SyntaxKind.JSDocTypeTag] = 'JSDocTypeTag',
    _a[ts.SyntaxKind.JSDocTemplateTag] = 'JSDocTemplateTag',
    _a[ts.SyntaxKind.JSDocTypedefTag] = 'JSDocTypedefTag',
    _a[ts.SyntaxKind.JSDocSeeTag] = 'JSDocSeeTag',
    _a[ts.SyntaxKind.JSDocPropertyTag] = 'JSDocPropertyTag',
    _a[ts.SyntaxKind.SyntaxList] = 'SyntaxList',
    _a[ts.SyntaxKind.NotEmittedStatement] = 'NotEmittedStatement',
    _a[ts.SyntaxKind.PartiallyEmittedExpression] = 'PartiallyEmittedExpression',
    _a[ts.SyntaxKind.CommaListExpression] = 'CommaListExpression',
    _a);
export function getKindNameFromNode(node) {
    // @ts-ignore
    return kindToString[node.kind] || String(node.kind);
}
