{"version":3,"sources":["../src/index.ts"],"sourcesContent":["import type * as TS from \"typescript\";\nimport type * as TS4 from \"typescript-4-9-4\";\nimport type {Mutable, RequiredExcept} from \"helpertypes\";\n\ntype PartialNodeFactory = RequiredExcept<\n\tTS.NodeFactory,\n\t| \"createClassStaticBlockDeclaration\"\n\t| \"updateClassStaticBlockDeclaration\"\n\t| \"createSatisfiesExpression\"\n\t| \"updateSatisfiesExpression\"\n\t| \"createUniquePrivateName\"\n\t| \"getGeneratedPrivateNameForNode\"\n>;\ntype NodeWithInternalFlags = TS.Node & {\n\tmodifierFlagsCache?: number;\n\ttransformFlags?: number;\n\toriginal?: TS.Node;\n\temitNode?: TS.Node;\n};\n\nexport function ensureNodeFactory(factoryLike: TS.NodeFactory | typeof TS): TS.NodeFactory {\n\tif (\"factory\" in factoryLike && factoryLike.factory != null) {\n\t\treturn normalizeNodeFactory(factoryLike.factory);\n\t} else if (!(\"updateSourceFileNode\" in factoryLike)) {\n\t\treturn normalizeNodeFactory(factoryLike as PartialNodeFactory);\n\t}\n\n\treturn createNodeFactory(factoryLike as typeof TS);\n}\n\nfunction splitDecoratorsAndModifiers(modifierLikes: readonly TS.ModifierLike[] | undefined): [readonly TS.Decorator[] | undefined, readonly TS.Modifier[] | undefined] {\n\tconst decorators = (modifierLikes?.filter(modifier => \"expression\" in modifier) ?? []) as readonly TS.Decorator[];\n\tconst modifiers = (modifierLikes?.filter(modifier => !(\"expression\" in modifier)) ?? []) as readonly TS.Modifier[];\n\treturn [decorators == null || decorators.length < 1 ? undefined : decorators, modifiers == null || modifiers.length < 1 ? undefined : modifiers];\n}\n\nfunction normalizeNodeFactory(factory: PartialNodeFactory): TS.NodeFactory {\n\t// By casting the factory to TypeScript 4.9.4, we're assuming to be on the last possible version where the decorators argument can still be separate from modifiers in the type definitions\n\tconst ts4CastFactory = factory as unknown as import(\"typescript-4-9-4\").NodeFactory;\n\n\tif (Boolean((factory as {__compatUpgraded?: boolean}).__compatUpgraded)) {\n\t\treturn factory;\n\t}\n\n\t// When this is true, this represents a TypeScript version where the the first argument to many of the factory functions is a list of decorators, which\n\t// has since been merged with modifiers\n\tlet badDecoratorsAsFirstArgument = false;\n\n\ttry {\n\t\t// This will throw on older TypeScript versions that always expect receiving decorators as the first argument\n\t\tbadDecoratorsAsFirstArgument = ts4CastFactory.createImportEqualsDeclaration([], false, \"\", ts4CastFactory.createIdentifier(\"\")).decorators != null;\n\t} catch {\n\t\tbadDecoratorsAsFirstArgument = ts4CastFactory.createImportEqualsDeclaration([], [], false, \"\", ts4CastFactory.createIdentifier(\"\")).decorators != null;\n\t}\n\n\tconst badCreateImportEqualsDeclaration = badDecoratorsAsFirstArgument && factory.createImportEqualsDeclaration.length === 4;\n\tconst badCreateImportSpecifier = badDecoratorsAsFirstArgument && factory.createImportSpecifier.length === 2;\n\tconst badCreateExportSpecifier = badDecoratorsAsFirstArgument && factory.createExportSpecifier.length === 2;\n\n\tconst badCreateMappedTypeNodeA = badDecoratorsAsFirstArgument && factory.createMappedTypeNode.length === 4;\n\tconst badCreateMappedTypeNodeB = badDecoratorsAsFirstArgument && factory.createMappedTypeNode.length === 5;\n\tconst badCreateTypeParameterDeclaration = badDecoratorsAsFirstArgument && factory.createTypeParameterDeclaration.length === 3;\n\n\t// Versions of createImportTypeNode that does not support Import Attributes\n\tconst badCreateImportTypeNode = factory.createImportAttribute == null;\n\n\t// Versions 4.8 and 4.9 of TypeScript for which createImportDeclaration does not support Import Attributes\n\tconst badCreateImportDeclaration = !badDecoratorsAsFirstArgument && factory.createImportAttribute == null;\n\t// Versions 4.8 and 4.9 of TypeScript for which createExportDeclaration does not support Import Attributes\n\tconst badCreateExportDeclaration = !badDecoratorsAsFirstArgument && factory.createImportAttribute == null;\n\n\tconst missingCreateSatisfiesExpression = factory.createSatisfiesExpression == null;\n\tconst missingCreateClassStaticBlockDeclaration = factory.createClassStaticBlockDeclaration == null;\n\tconst missingCreateUniquePrivateName = factory.createUniquePrivateName == null;\n\tconst missingGetGeneratedPrivateNameForNode = factory.getGeneratedPrivateNameForNode == null;\n\tconst missingCreatePrivateIdentifier = factory.createPrivateIdentifier == null;\n\tconst missingCreateAssertClause = factory.createAssertClause == null;\n\tconst missingCreateAssertEntry = factory.createAssertEntry == null;\n\tconst missingCreateImportTypeAssertionContainer = factory.createImportTypeAssertionContainer == null;\n\tconst missingCreateImportAttributes = factory.createImportAttributes == null;\n\tconst missingCreateImportAttribute = factory.createImportAttribute == null;\n\tconst missingCreateJSDocMemberName = factory.createJSDocMemberName == null;\n\tconst missingCreateJSDocLinkCode = factory.createJSDocLinkCode == null;\n\tconst missingCreateJSDocLinkPlain = factory.createJSDocLinkPlain == null;\n\tconst missingCreateJSDocOverloadTag = factory.createJSDocOverloadTag == null;\n\tconst missingCreateJSDocThrowsTag = factory.createJSDocThrowsTag == null;\n\tconst missingCreateJSDocSatisfiesTag = factory.createJSDocSatisfiesTag == null;\n\tconst missingCreateJSDocImportTag = factory.createJSDocImportTag == null;\n\tconst missingCreateJsxNamespacedName = factory.createJsxNamespacedName == null;\n\tconst missingReplaceModifiers = factory.replaceModifiers == null;\n\tconst missingReplaceDecoratorsAndModifiers = factory.replaceDecoratorsAndModifiers == null;\n\tconst missingReplacePropertyName = factory.replacePropertyName == null;\n\n\tconst needsModifications =\n\t\tbadCreateImportEqualsDeclaration ||\n\t\tbadCreateImportSpecifier ||\n\t\tbadCreateExportSpecifier ||\n\t\tbadCreateImportTypeNode ||\n\t\tbadCreateImportDeclaration ||\n\t\tbadCreateExportDeclaration ||\n\t\tbadCreateMappedTypeNodeA ||\n\t\tbadCreateMappedTypeNodeB ||\n\t\tbadCreateTypeParameterDeclaration ||\n\t\tmissingCreateSatisfiesExpression ||\n\t\tmissingCreateClassStaticBlockDeclaration ||\n\t\tmissingCreateUniquePrivateName ||\n\t\tmissingGetGeneratedPrivateNameForNode ||\n\t\tmissingCreatePrivateIdentifier ||\n\t\tmissingCreateAssertClause ||\n\t\tmissingCreateAssertEntry ||\n\t\tmissingCreateImportTypeAssertionContainer ||\n\t\tmissingCreateImportAttributes ||\n\t\tmissingCreateImportAttribute ||\n\t\tmissingCreateJSDocMemberName ||\n\t\tmissingCreateJSDocLinkCode ||\n\t\tmissingCreateJSDocLinkPlain ||\n\t\tmissingCreateJSDocOverloadTag ||\n\t\tmissingCreateJSDocThrowsTag ||\n\t\tmissingCreateJSDocSatisfiesTag ||\n\t\tmissingCreateJSDocImportTag ||\n\t\tmissingCreateJsxNamespacedName ||\n\t\tmissingReplaceModifiers ||\n\t\tmissingReplaceDecoratorsAndModifiers ||\n\t\tmissingReplacePropertyName ||\n\t\tbadDecoratorsAsFirstArgument;\n\n\tif (needsModifications) {\n\t\t/**\n\t\t * The following helpers are internal TypeScript helpers that have been inlined for reuse inside factory helpers when the full TypeScript namespace is not available\n\t\t */\n\n\t\tconst withOriginal = \"original\" in factory.updateBlock(factory.createBlock([]), []);\n\n\t\tconst setOriginalNode = <T extends TS.Node>(node: T & NodeWithInternalFlags, original: T & NodeWithInternalFlags): T => {\n\t\t\tnode.original = original;\n\t\t\treturn node;\n\t\t};\n\n\t\tconst setTextRangeEnd = <T extends TS.TextRange>(range: T, end: number): T => {\n\t\t\trange.end = end;\n\t\t\treturn range;\n\t\t};\n\n\t\tconst setTextRangePos = <T extends TS.TextRange>(range: T, pos: number): T => {\n\t\t\trange.pos = pos;\n\t\t\treturn range;\n\t\t};\n\n\t\tconst setTextRangePosEnd = <T extends TS.TextRange>(range: T, pos: number, end: number): T => setTextRangeEnd(setTextRangePos(range, pos), end);\n\n\t\tconst setTextRange = <T extends TS.TextRange>(range: T, loc: TS.TextRange | undefined): T => (loc != null ? setTextRangePosEnd(range, loc.pos, loc.end) : range);\n\n\t\tconst updateWithoutOriginal = <T extends TS.Node>(updated: T, original: T): T => {\n\t\t\tif (updated !== original) {\n\t\t\t\tsetTextRange(updated, original);\n\t\t\t}\n\t\t\treturn updated;\n\t\t};\n\t\tconst updateWithOriginal = <T extends TS.Node>(updated: T, original: T): T => {\n\t\t\tif (updated !== original) {\n\t\t\t\tsetOriginalNode(updated, original);\n\t\t\t\tsetTextRange(updated, original);\n\t\t\t}\n\t\t\treturn updated;\n\t\t};\n\n\t\tconst update = withOriginal ? updateWithOriginal : updateWithoutOriginal;\n\n\t\tconst createPrivateIdentifier = missingCreatePrivateIdentifier\n\t\t\t? (() =>\n\t\t\t\t\tfunction (text: string): TS.PrivateIdentifier {\n\t\t\t\t\t\tconst node = factory.createIdentifier(text) as unknown as Mutable<TS.PrivateIdentifier>;\n\t\t\t\t\t\treturn node;\n\t\t\t\t\t})()\n\t\t\t: factory.createPrivateIdentifier;\n\n\t\treturn {\n\t\t\t[\"__compatUpgraded\" as never]: true,\n\t\t\t...factory,\n\t\t\tcreatePrivateIdentifier,\n\t\t\t...(badCreateImportEqualsDeclaration\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createImportEqualsDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tisTypeOnly: boolean,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\tmoduleReference: TS.ModuleReference\n\t\t\t\t\t\t): TS.ImportEqualsDeclaration;\n\t\t\t\t\t\tfunction createImportEqualsDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tisTypeOnly: boolean,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\tmoduleReference: TS.ModuleReference\n\t\t\t\t\t\t): TS.ImportEqualsDeclaration;\n\t\t\t\t\t\tfunction createImportEqualsDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrIsTypeOnly: readonly TS.Modifier[] | boolean | undefined,\n\t\t\t\t\t\t\tisTypeOnlyOrName: boolean | string | TS.Identifier,\n\t\t\t\t\t\t\tnameOrModuleReference: string | TS.Identifier | TS.ModuleReference,\n\t\t\t\t\t\t\tmoduleReferenceOrUndefined?: TS.ModuleReference\n\t\t\t\t\t\t): TS.ImportEqualsDeclaration {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 4;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrIsTypeOnly as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? isTypeOnlyOrName : nameOrModuleReference) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst moduleReference = (isShort ? nameOrModuleReference : moduleReferenceOrUndefined) as TS.ModuleReference;\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-1-2\").NodeFactory).createImportEqualsDeclaration(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tmoduleReference as never\n\t\t\t\t\t\t\t) as unknown as TS.ImportEqualsDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateImportEqualsDeclaration(\n\t\t\t\t\t\t\tnode: TS.ImportEqualsDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tisTypeOnly: boolean,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\tmoduleReference: TS.ModuleReference\n\t\t\t\t\t\t): TS.ImportEqualsDeclaration;\n\t\t\t\t\t\tfunction updateImportEqualsDeclaration(\n\t\t\t\t\t\t\tnode: TS.ImportEqualsDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tisTypeOnly: boolean,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\tmoduleReference: TS.ModuleReference\n\t\t\t\t\t\t): TS.ImportEqualsDeclaration;\n\t\t\t\t\t\tfunction updateImportEqualsDeclaration(\n\t\t\t\t\t\t\tnode: TS.ImportEqualsDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrIsTypeOnly: readonly TS.Modifier[] | boolean | undefined,\n\t\t\t\t\t\t\tisTypeOnlyOrName: boolean | string | TS.Identifier,\n\t\t\t\t\t\t\tnameOrModuleReference: string | TS.Identifier | TS.ModuleReference,\n\t\t\t\t\t\t\tmoduleReferenceOrUndefined?: TS.ModuleReference\n\t\t\t\t\t\t): TS.ImportEqualsDeclaration {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 5;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrIsTypeOnly as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? isTypeOnlyOrName : nameOrModuleReference) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst moduleReference = (isShort ? nameOrModuleReference : moduleReferenceOrUndefined) as TS.ModuleReference;\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-1-2\").NodeFactory).updateImportEqualsDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tmoduleReference as never\n\t\t\t\t\t\t\t) as unknown as TS.ImportEqualsDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateImportEqualsDeclaration,\n\t\t\t\t\t\t\tupdateImportEqualsDeclaration\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\t\t\t...(badCreateImportSpecifier\n\t\t\t\t? {\n\t\t\t\t\t\tcreateImportSpecifier(isTypeOnly: boolean, propertyName: TS.Identifier | undefined, name: TS.Identifier): TS.ImportSpecifier {\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-4-3\").NodeFactory).createImportSpecifier(propertyName as never, name as never) as unknown as TS.ImportSpecifier;\n\t\t\t\t\t\t},\n\n\t\t\t\t\t\tupdateImportSpecifier(node: TS.ImportSpecifier, isTypeOnly: boolean, propertyName: TS.Identifier | undefined, name: TS.Identifier): TS.ImportSpecifier {\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-4-3\").NodeFactory).updateImportSpecifier(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tpropertyName as never,\n\t\t\t\t\t\t\t\tname as never\n\t\t\t\t\t\t\t) as unknown as TS.ImportSpecifier;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t\t...(badCreateExportSpecifier\n\t\t\t\t? {\n\t\t\t\t\t\tcreateExportSpecifier(isTypeOnly: boolean, propertyName: string | TS.Identifier | undefined, name: string | TS.Identifier): TS.ExportSpecifier {\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-4-3\").NodeFactory).createExportSpecifier(propertyName as never, name as never) as unknown as TS.ExportSpecifier;\n\t\t\t\t\t\t},\n\n\t\t\t\t\t\tupdateExportSpecifier(node: TS.ExportSpecifier, isTypeOnly: boolean, propertyName: TS.Identifier | undefined, name: TS.Identifier): TS.ExportSpecifier {\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-4-3\").NodeFactory).updateExportSpecifier(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tpropertyName as never,\n\t\t\t\t\t\t\t\tname as never\n\t\t\t\t\t\t\t) as unknown as TS.ExportSpecifier;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t\t...(badCreateImportTypeNode\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createImportTypeNode(argument: TS.TypeNode, qualifier?: TS.EntityName, typeArguments?: readonly TS.TypeNode[], isTypeOf?: boolean): TS.ImportTypeNode;\n\t\t\t\t\t\tfunction createImportTypeNode(\n\t\t\t\t\t\t\targument: TS.TypeNode,\n\t\t\t\t\t\t\tattributes?: TS.ImportAttributes,\n\t\t\t\t\t\t\tqualifier?: TS.EntityName,\n\t\t\t\t\t\t\ttypeArguments?: readonly TS.TypeNode[],\n\t\t\t\t\t\t\tisTypeOf?: boolean\n\t\t\t\t\t\t): TS.ImportTypeNode;\n\t\t\t\t\t\tfunction createImportTypeNode(\n\t\t\t\t\t\t\targument: TS.TypeNode,\n\t\t\t\t\t\t\tattributesOrQualifier?: TS.ImportAttributes | TS.EntityName,\n\t\t\t\t\t\t\tqualifierOrTypeArguments?: TS.EntityName | readonly TS.TypeNode[],\n\t\t\t\t\t\t\ttypeArgumentsOrIsTypeOf?: readonly TS.TypeNode[] | boolean,\n\t\t\t\t\t\t\tisTypeOfOrUndefined?: boolean\n\t\t\t\t\t\t): TS.ImportTypeNode {\n\t\t\t\t\t\t\t// Never pass ImportAttributes to the factory function if it doesn't support it\n\t\t\t\t\t\t\tconst qualifier = attributesOrQualifier != null && attributesOrQualifier.kind === 300 /* ImportAttributes */ ? undefined : attributesOrQualifier!;\n\n\t\t\t\t\t\t\tif (arguments.length < 5) {\n\t\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-6-4\").NodeFactory).createImportTypeNode(\n\t\t\t\t\t\t\t\t\targument as never,\n\t\t\t\t\t\t\t\t\tqualifier as never,\n\t\t\t\t\t\t\t\t\tqualifierOrTypeArguments as never,\n\t\t\t\t\t\t\t\t\ttypeArgumentsOrIsTypeOf as never\n\t\t\t\t\t\t\t\t) as unknown as TS.ImportTypeNode;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-6-4\").NodeFactory).createImportTypeNode(\n\t\t\t\t\t\t\t\t\targument as never,\n\t\t\t\t\t\t\t\t\tqualifierOrTypeArguments as never,\n\t\t\t\t\t\t\t\t\ttypeArgumentsOrIsTypeOf as never,\n\t\t\t\t\t\t\t\t\tisTypeOfOrUndefined as never\n\t\t\t\t\t\t\t\t) as unknown as TS.ImportTypeNode;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateImportTypeNode(\n\t\t\t\t\t\t\tnode: TS.ImportTypeNode,\n\t\t\t\t\t\t\targument: TS.TypeNode,\n\t\t\t\t\t\t\tqualifier?: TS.EntityName,\n\t\t\t\t\t\t\ttypeArguments?: readonly TS.TypeNode[],\n\t\t\t\t\t\t\tisTypeOf?: boolean\n\t\t\t\t\t\t): TS.ImportTypeNode;\n\t\t\t\t\t\tfunction updateImportTypeNode(\n\t\t\t\t\t\t\tnode: TS.ImportTypeNode,\n\t\t\t\t\t\t\targument: TS.TypeNode,\n\t\t\t\t\t\t\tattributes?: TS.ImportAttributes,\n\t\t\t\t\t\t\tqualifier?: TS.EntityName,\n\t\t\t\t\t\t\ttypeArguments?: readonly TS.TypeNode[],\n\t\t\t\t\t\t\tisTypeOf?: boolean\n\t\t\t\t\t\t): TS.ImportTypeNode;\n\t\t\t\t\t\tfunction updateImportTypeNode(\n\t\t\t\t\t\t\tnode: TS.ImportTypeNode,\n\t\t\t\t\t\t\targument: TS.TypeNode,\n\t\t\t\t\t\t\tattributesOrQualifier?: TS.ImportAttributes | TS.EntityName,\n\t\t\t\t\t\t\tqualifierOrTypeArguments?: TS.EntityName | readonly TS.TypeNode[],\n\t\t\t\t\t\t\ttypeArgumentsOrIsTypeOf?: readonly TS.TypeNode[] | boolean,\n\t\t\t\t\t\t\tisTypeOfOrUndefined?: boolean\n\t\t\t\t\t\t): TS.ImportTypeNode {\n\t\t\t\t\t\t\t// Never pass ImportAttributes to the factory function if it doesn't support it\n\t\t\t\t\t\t\tconst qualifierOrUndefined = attributesOrQualifier != null && attributesOrQualifier.kind === 300 /* ImportAttributes */ ? undefined : attributesOrQualifier!;\n\n\t\t\t\t\t\t\tif (arguments.length < 6) {\n\t\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-6-4\").NodeFactory).updateImportTypeNode(\n\t\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\t\targument as never,\n\t\t\t\t\t\t\t\t\tqualifierOrUndefined as never,\n\t\t\t\t\t\t\t\t\tqualifierOrTypeArguments as never,\n\t\t\t\t\t\t\t\t\ttypeArgumentsOrIsTypeOf as never\n\t\t\t\t\t\t\t\t) as unknown as TS.ImportTypeNode;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-6-4\").NodeFactory).updateImportTypeNode(\n\t\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\t\targument as never,\n\t\t\t\t\t\t\t\t\tqualifierOrTypeArguments as never,\n\t\t\t\t\t\t\t\t\ttypeArgumentsOrIsTypeOf as never,\n\t\t\t\t\t\t\t\t\tisTypeOfOrUndefined as never\n\t\t\t\t\t\t\t\t) as unknown as TS.ImportTypeNode;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {createImportTypeNode, updateImportTypeNode};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\t\t\t...(badCreateImportDeclaration\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createImportDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\timportClause: TS.ImportClause | undefined,\n\t\t\t\t\t\t\tmoduleSpecifier: TS.Expression,\n\t\t\t\t\t\t\t_?: TS.ImportAttributes\n\t\t\t\t\t\t): TS.ImportDeclaration {\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-8-2\").NodeFactory).createImportDeclaration(\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\timportClause as never,\n\t\t\t\t\t\t\t\tmoduleSpecifier as never\n\t\t\t\t\t\t\t) as unknown as TS.ImportDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateImportDeclaration(\n\t\t\t\t\t\t\tnode: TS.ImportDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\timportClause: TS.ImportClause | undefined,\n\t\t\t\t\t\t\tmoduleSpecifier: TS.Expression,\n\t\t\t\t\t\t\t_?: TS.ImportAttributes\n\t\t\t\t\t\t): TS.ImportDeclaration {\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-8-2\").NodeFactory).updateImportDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\timportClause as never,\n\t\t\t\t\t\t\t\tmoduleSpecifier as never,\n\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t) as unknown as TS.ImportDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {createImportDeclaration, updateImportDeclaration};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\t\t\t...(badCreateExportDeclaration\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createExportDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tisTypeOnly: boolean,\n\t\t\t\t\t\t\texportClause: TS.NamedExportBindings | undefined,\n\t\t\t\t\t\t\tmoduleSpecifier?: TS.Expression,\n\t\t\t\t\t\t\t_?: TS.ImportAttributes\n\t\t\t\t\t\t): TS.ExportDeclaration {\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-8-2\").NodeFactory).createExportDeclaration(\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tisTypeOnly as never,\n\t\t\t\t\t\t\t\texportClause as never,\n\t\t\t\t\t\t\t\tmoduleSpecifier as never\n\t\t\t\t\t\t\t) as unknown as TS.ExportDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateExportDeclaration(\n\t\t\t\t\t\t\tnode: TS.ExportDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tisTypeOnly: boolean,\n\t\t\t\t\t\t\texportClause: TS.NamedExportBindings | undefined,\n\t\t\t\t\t\t\tmoduleSpecifier: TS.Expression | undefined,\n\t\t\t\t\t\t\t_: TS.ImportAttributes | undefined\n\t\t\t\t\t\t): TS.ExportDeclaration {\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-8-2\").NodeFactory).updateExportDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tisTypeOnly as never,\n\t\t\t\t\t\t\t\texportClause as never,\n\t\t\t\t\t\t\t\tmoduleSpecifier as never,\n\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t) as unknown as TS.ExportDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {createExportDeclaration, updateExportDeclaration};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\t\t\t...(badCreateMappedTypeNodeA\n\t\t\t\t? {\n\t\t\t\t\t\tcreateMappedTypeNode(\n\t\t\t\t\t\t\treadonlyToken: TS.ReadonlyKeyword | TS.PlusToken | TS.MinusToken | undefined,\n\t\t\t\t\t\t\ttypeParameter: TS.TypeParameterDeclaration,\n\t\t\t\t\t\t\tnameType: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tquestionToken: TS.QuestionToken | TS.PlusToken | TS.MinusToken | undefined,\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined\n\t\t\t\t\t\t): TS.MappedTypeNode {\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-0-3\").NodeFactory).createMappedTypeNode(\n\t\t\t\t\t\t\t\treadonlyToken as never,\n\t\t\t\t\t\t\t\ttypeParameter as never,\n\t\t\t\t\t\t\t\tquestionToken as never,\n\t\t\t\t\t\t\t\ttype as never\n\t\t\t\t\t\t\t) as unknown as TS.MappedTypeNode;\n\t\t\t\t\t\t},\n\n\t\t\t\t\t\tupdateMappedTypeNode(\n\t\t\t\t\t\t\tnode: TS.MappedTypeNode,\n\t\t\t\t\t\t\treadonlyToken: TS.ReadonlyKeyword | TS.PlusToken | TS.MinusToken | undefined,\n\t\t\t\t\t\t\ttypeParameter: TS.TypeParameterDeclaration,\n\t\t\t\t\t\t\tnameType: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tquestionToken: TS.QuestionToken | TS.PlusToken | TS.MinusToken | undefined,\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined\n\t\t\t\t\t\t): TS.MappedTypeNode {\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-0-3\").NodeFactory).updateMappedTypeNode(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\treadonlyToken as never,\n\t\t\t\t\t\t\t\ttypeParameter as never,\n\t\t\t\t\t\t\t\tquestionToken as never,\n\t\t\t\t\t\t\t\ttype as never\n\t\t\t\t\t\t\t) as unknown as TS.MappedTypeNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t\t...(badCreateMappedTypeNodeB\n\t\t\t\t? {\n\t\t\t\t\t\tcreateMappedTypeNode(\n\t\t\t\t\t\t\treadonlyToken: TS.ReadonlyKeyword | TS.PlusToken | TS.MinusToken | undefined,\n\t\t\t\t\t\t\ttypeParameter: TS.TypeParameterDeclaration,\n\t\t\t\t\t\t\tnameType: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tquestionToken: TS.QuestionToken | TS.PlusToken | TS.MinusToken | undefined,\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tmembers?: TS.NodeArray<TS.TypeElement>\n\t\t\t\t\t\t): TS.MappedTypeNode {\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-4-3\").NodeFactory).createMappedTypeNode(\n\t\t\t\t\t\t\t\treadonlyToken as never,\n\t\t\t\t\t\t\t\ttypeParameter as never,\n\t\t\t\t\t\t\t\tnameType as never,\n\t\t\t\t\t\t\t\tquestionToken as never,\n\t\t\t\t\t\t\t\ttype as never\n\t\t\t\t\t\t\t) as unknown as TS.MappedTypeNode;\n\t\t\t\t\t\t},\n\n\t\t\t\t\t\tupdateMappedTypeNode(\n\t\t\t\t\t\t\tnode: TS.MappedTypeNode,\n\t\t\t\t\t\t\treadonlyToken: TS.ReadonlyKeyword | TS.PlusToken | TS.MinusToken | undefined,\n\t\t\t\t\t\t\ttypeParameter: TS.TypeParameterDeclaration,\n\t\t\t\t\t\t\tnameType: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tquestionToken: TS.QuestionToken | TS.PlusToken | TS.MinusToken | undefined,\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tmembers?: TS.NodeArray<TS.TypeElement>\n\t\t\t\t\t\t): TS.MappedTypeNode {\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-4-3\").NodeFactory).updateMappedTypeNode(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\treadonlyToken as never,\n\t\t\t\t\t\t\t\ttypeParameter as never,\n\t\t\t\t\t\t\t\tnameType as never,\n\t\t\t\t\t\t\t\tquestionToken as never,\n\t\t\t\t\t\t\t\ttype as never\n\t\t\t\t\t\t\t) as unknown as TS.MappedTypeNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t: {}),\n\t\t\t...(badCreateTypeParameterDeclaration\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createTypeParameterDeclaration(name: string | TS.Identifier, constraint?: TS.TypeNode, defaultType?: TS.TypeNode): TS.TypeParameterDeclaration;\n\t\t\t\t\t\tfunction createTypeParameterDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\tconstraint?: TS.TypeNode,\n\t\t\t\t\t\t\tdefaultType?: TS.TypeNode\n\t\t\t\t\t\t): TS.TypeParameterDeclaration;\n\t\t\t\t\t\tfunction createTypeParameterDeclaration(\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\t\t\t\t\t\tnameOrConstraint?: string | TS.Identifier | TS.TypeNode,\n\t\t\t\t\t\t\tconstraintOrDefaultType?: TS.TypeNode,\n\t\t\t\t\t\t\tdefaultTypeOrUndefined?: TS.TypeNode\n\t\t\t\t\t\t): TS.TypeParameterDeclaration {\n\t\t\t\t\t\t\tconst isShort =\n\t\t\t\t\t\t\t\ttypeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\t\t\t\t\t\tconst modifiers = (isShort ? undefined : modifiersOrName) as TS.Modifier[] | undefined;\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrConstraint) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst constraint = (isShort ? nameOrConstraint : constraintOrDefaultType) as TS.TypeNode | undefined;\n\t\t\t\t\t\t\tconst defaultType = (isShort ? constraintOrDefaultType : defaultTypeOrUndefined) as TS.TypeNode | undefined;\n\n\t\t\t\t\t\t\tconst typeParameterDeclaration = (factory as unknown as import(\"typescript-4-6-4\").NodeFactory).createTypeParameterDeclaration(\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tconstraint as never,\n\t\t\t\t\t\t\t\tdefaultType as never\n\t\t\t\t\t\t\t) as unknown as TS.TypeParameterDeclaration;\n\t\t\t\t\t\t\tif (modifiers != null) {\n\t\t\t\t\t\t\t\t(typeParameterDeclaration as unknown as Mutable<TS.TypeParameterDeclaration>).modifiers = factory.createNodeArray(modifiers);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn typeParameterDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateTypeParameterDeclaration(\n\t\t\t\t\t\t\tnode: TS.TypeParameterDeclaration,\n\t\t\t\t\t\t\tname: TS.Identifier,\n\t\t\t\t\t\t\tconstraint?: TS.TypeNode,\n\t\t\t\t\t\t\tdefaultType?: TS.TypeNode\n\t\t\t\t\t\t): TS.TypeParameterDeclaration;\n\t\t\t\t\t\tfunction updateTypeParameterDeclaration(\n\t\t\t\t\t\t\tnode: TS.TypeParameterDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: TS.Identifier,\n\t\t\t\t\t\t\tconstraint?: TS.TypeNode,\n\t\t\t\t\t\t\tdefaultType?: TS.TypeNode\n\t\t\t\t\t\t): TS.TypeParameterDeclaration;\n\t\t\t\t\t\tfunction updateTypeParameterDeclaration(\n\t\t\t\t\t\t\tnode: TS.TypeParameterDeclaration,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.Modifier[] | TS.Identifier | undefined,\n\t\t\t\t\t\t\tnameOrConstraint?: string | TS.Identifier | TS.TypeNode,\n\t\t\t\t\t\t\tconstraintOrDefaultType?: TS.TypeNode,\n\t\t\t\t\t\t\tdefaultTypeOrUndefined?: TS.TypeNode\n\t\t\t\t\t\t): TS.TypeParameterDeclaration {\n\t\t\t\t\t\t\tconst isShort = modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName; /* Identifier */\n\t\t\t\t\t\t\tconst modifiers = (isShort ? undefined : modifiersOrName) as TS.Modifier[] | undefined;\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrConstraint) as TS.Identifier;\n\t\t\t\t\t\t\tconst constraint = (isShort ? nameOrConstraint : constraintOrDefaultType) as TS.TypeNode | undefined;\n\t\t\t\t\t\t\tconst defaultType = (isShort ? constraintOrDefaultType : defaultTypeOrUndefined) as TS.TypeNode | undefined;\n\n\t\t\t\t\t\t\tconst typeParameterDeclaration = (factory as unknown as import(\"typescript-4-6-4\").NodeFactory).updateTypeParameterDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tconstraint as never,\n\t\t\t\t\t\t\t\tdefaultType as never\n\t\t\t\t\t\t\t) as unknown as TS.TypeParameterDeclaration;\n\t\t\t\t\t\t\tif (modifiers != null) {\n\t\t\t\t\t\t\t\t(typeParameterDeclaration as unknown as Mutable<TS.TypeParameterDeclaration>).modifiers = factory.createNodeArray(modifiers);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn typeParameterDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateTypeParameterDeclaration,\n\t\t\t\t\t\t\tupdateTypeParameterDeclaration\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\t\t\t...(missingCreateSatisfiesExpression\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createSatisfiesExpression(expression: TS.Expression, type: TS.TypeNode): TS.SatisfiesExpression {\n\t\t\t\t\t\t\treturn {...expression} as TS.SatisfiesExpression;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateSatisfiesExpression(node: TS.SatisfiesExpression, expression: TS.Expression, type: TS.TypeNode): TS.SatisfiesExpression {\n\t\t\t\t\t\t\treturn expression === node.expression && type === node.type ? node : update(createSatisfiesExpression(expression, type), node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateSatisfiesExpression,\n\t\t\t\t\t\t\tupdateSatisfiesExpression\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\n\t\t\t...(missingCreateUniquePrivateName\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createUniquePrivateName(text?: string): TS.PrivateIdentifier {\n\t\t\t\t\t\t\tif (text != null && !text.startsWith(\"#\")) {\n\t\t\t\t\t\t\t\tthrow new TypeError(\"First character of private identifier must be #: \" + text);\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst node = createPrivateIdentifier(text ?? \"\");\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateUniquePrivateName\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\n\t\t\t...(missingGetGeneratedPrivateNameForNode\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction getGeneratedPrivateNameForNode(node: TS.Node): TS.PrivateIdentifier {\n\t\t\t\t\t\t\treturn createPrivateIdentifier(\"\");\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tgetGeneratedPrivateNameForNode\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\n\t\t\t...(missingCreateClassStaticBlockDeclaration\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createClassStaticBlockDeclaration(body: TS.Block): TS.ClassStaticBlockDeclaration;\n\t\t\t\t\t\tfunction createClassStaticBlockDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tbody: TS.Block\n\t\t\t\t\t\t): TS.ClassStaticBlockDeclaration;\n\t\t\t\t\t\tfunction createClassStaticBlockDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrBlock: readonly TS.Decorator[] | TS.Block | undefined,\n\t\t\t\t\t\t\tmodifiersOrUndefined?: readonly TS.Modifier[],\n\t\t\t\t\t\t\tbodyOrUndefined?: TS.Block\n\t\t\t\t\t\t): TS.ClassStaticBlockDeclaration {\n\t\t\t\t\t\t\tconst body = arguments.length >= 3 ? bodyOrUndefined! : (decoratorsOrBlock as TS.Block);\n\n\t\t\t\t\t\t\tconst node = factory.createEmptyStatement() as unknown as Mutable<TS.ClassStaticBlockDeclaration>;\n\t\t\t\t\t\t\tnode.body = body;\n\t\t\t\t\t\t\t(node as NodeWithInternalFlags).transformFlags = 8388608 /* ContainsClassFields */;\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateClassStaticBlockDeclaration(node: TS.ClassStaticBlockDeclaration, body: TS.Block): TS.ClassStaticBlockDeclaration;\n\t\t\t\t\t\tfunction updateClassStaticBlockDeclaration(\n\t\t\t\t\t\t\tnode: TS.ClassStaticBlockDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tbody: TS.Block\n\t\t\t\t\t\t): TS.ClassStaticBlockDeclaration;\n\t\t\t\t\t\tfunction updateClassStaticBlockDeclaration(\n\t\t\t\t\t\t\tnode: TS.ClassStaticBlockDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrBlock: readonly TS.Decorator[] | TS.Block | undefined,\n\t\t\t\t\t\t\tmodifiersOrUndefined?: readonly TS.Modifier[],\n\t\t\t\t\t\t\tbodyOrUndefined?: TS.Block\n\t\t\t\t\t\t): TS.ClassStaticBlockDeclaration {\n\t\t\t\t\t\t\tconst body = arguments.length >= 4 ? bodyOrUndefined! : (decoratorsOrBlock as TS.Block);\n\t\t\t\t\t\t\treturn body === node.body ? node : update(createClassStaticBlockDeclaration(body), node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateClassStaticBlockDeclaration,\n\t\t\t\t\t\t\tupdateClassStaticBlockDeclaration\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\n\t\t\t...(missingCreateAssertClause\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createAssertClause(elements: TS.NodeArray<TS.AssertEntry>, multiLine?: boolean): TS.AssertClause {\n\t\t\t\t\t\t\tconst node = factory.createEmptyStatement() as unknown as Mutable<TS.AssertClause>;\n\n\t\t\t\t\t\t\tnode.elements = elements;\n\t\t\t\t\t\t\tnode.multiLine = multiLine;\n\t\t\t\t\t\t\t(node as NodeWithInternalFlags).transformFlags! |= 4 /* ContainsESNext */;\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateAssertClause(node: TS.AssertClause, elements: TS.NodeArray<TS.AssertEntry>, multiLine?: boolean): TS.AssertClause {\n\t\t\t\t\t\t\treturn node.elements !== elements || node.multiLine !== multiLine ? update(createAssertClause(elements, multiLine), node) : node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateAssertClause,\n\t\t\t\t\t\t\tupdateAssertClause\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\n\t\t\t...(missingCreateAssertEntry\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createAssertEntry(name: TS.AssertionKey, value: TS.StringLiteral): TS.AssertEntry {\n\t\t\t\t\t\t\tconst node = factory.createEmptyStatement() as unknown as Mutable<TS.AssertEntry>;\n\n\t\t\t\t\t\t\tnode.name = name;\n\t\t\t\t\t\t\tnode.value = value;\n\t\t\t\t\t\t\t(node as NodeWithInternalFlags).transformFlags! |= 4 /* ContainsESNext */;\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateAssertEntry(node: TS.AssertEntry, name: TS.AssertionKey, value: TS.StringLiteral): TS.AssertEntry {\n\t\t\t\t\t\t\treturn node.name !== name || node.value !== value ? update(createAssertEntry(name, value), node) : node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateAssertEntry,\n\t\t\t\t\t\t\tupdateAssertEntry\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\t\t\t...(missingCreateImportTypeAssertionContainer\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createImportTypeAssertionContainer(clause: TS.AssertClause, multiLine?: boolean): TS.ImportTypeAssertionContainer {\n\t\t\t\t\t\t\tconst node = factory.createEmptyStatement() as unknown as Mutable<TS.ImportTypeAssertionContainer>;\n\t\t\t\t\t\t\tnode.assertClause = clause;\n\t\t\t\t\t\t\tnode.multiLine = multiLine;\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateImportTypeAssertionContainer(node: TS.ImportTypeAssertionContainer, clause: TS.AssertClause, multiLine?: boolean): TS.ImportTypeAssertionContainer {\n\t\t\t\t\t\t\treturn node.assertClause !== clause || node.multiLine !== multiLine ? update(createImportTypeAssertionContainer(clause, multiLine), node) : node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateImportTypeAssertionContainer,\n\t\t\t\t\t\t\tupdateImportTypeAssertionContainer\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\n\t\t\t...(missingCreateImportAttributes\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createImportAttributes(elements: TS.NodeArray<TS.ImportAttribute>, multiLine?: boolean): TS.ImportAttributes {\n\t\t\t\t\t\t\tconst node = factory.createEmptyStatement() as unknown as Mutable<TS.ImportAttributes>;\n\t\t\t\t\t\t\tnode.elements = elements;\n\t\t\t\t\t\t\tnode.multiLine = multiLine;\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateImportAttributes(node: TS.ImportAttributes, elements: TS.NodeArray<TS.ImportAttribute>, multiLine?: boolean): TS.ImportAttributes {\n\t\t\t\t\t\t\treturn node.elements !== elements || node.multiLine !== multiLine ? update(createImportAttributes(elements, multiLine), node) : node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateImportAttributes,\n\t\t\t\t\t\t\tupdateImportAttributes\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\n\t\t\t...(missingCreateImportAttribute\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createImportAttribute(name: TS.ImportAttributeName, value: TS.Expression): TS.ImportAttribute {\n\t\t\t\t\t\t\tconst node = factory.createEmptyStatement() as unknown as Mutable<TS.ImportAttribute>;\n\t\t\t\t\t\t\tnode.name = name;\n\t\t\t\t\t\t\tnode.value = value;\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateImportAttribute(node: TS.ImportAttribute, name: TS.ImportAttributeName, value: TS.Expression): TS.ImportAttribute {\n\t\t\t\t\t\t\treturn node.name !== name || node.value !== value ? update(createImportAttribute(name, value), node) : node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateImportAttribute,\n\t\t\t\t\t\t\tupdateImportAttribute\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\n\t\t\t...(missingReplaceModifiers\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction replaceModifiers<T extends TS.HasModifiers>(n: T, modifiers: readonly TS.Modifier[] | TS.ModifierFlags | undefined): T {\n\t\t\t\t\t\t\tlet modifierArray;\n\t\t\t\t\t\t\tif (typeof modifiers === \"number\") {\n\t\t\t\t\t\t\t\tmodifierArray = factory.createModifiersFromModifierFlags(modifiers);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\tmodifierArray = modifiers;\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\tconst clone = \"cloneNode\" in factory ? (factory.cloneNode as (n: T) => Mutable<TS.HasModifiers>)(n) : ({...n} as Mutable<TS.HasModifiers>);\n\t\t\t\t\t\t\tclone.modifiers = factory.createNodeArray(modifierArray);\n\t\t\t\t\t\t\treturn clone as T;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\treplaceModifiers\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\n\t\t\t...(missingReplaceDecoratorsAndModifiers\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction replaceDecoratorsAndModifiers<T extends TS.HasModifiers & TS.HasDecorators>(n: T, modifiers: readonly TS.ModifierLike[] | undefined): T {\n\t\t\t\t\t\t\tconst clone =\n\t\t\t\t\t\t\t\t\"cloneNode\" in factory ? (factory.cloneNode as (n: T) => Mutable<TS.HasModifiers & TS.HasDecorators>)(n) : ({...n} as Mutable<TS.HasModifiers & TS.HasDecorators>);\n\t\t\t\t\t\t\tclone.modifiers = factory.createNodeArray(modifiers);\n\t\t\t\t\t\t\treturn clone as T;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\treplaceDecoratorsAndModifiers\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\n\t\t\t...(missingReplacePropertyName\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction replacePropertyName<\n\t\t\t\t\t\t\tT extends TS.AccessorDeclaration | TS.MethodDeclaration | TS.MethodSignature | TS.PropertyDeclaration | TS.PropertySignature | TS.PropertyAssignment\n\t\t\t\t\t\t>(n: T, name: T[\"name\"]): T {\n\t\t\t\t\t\t\tconst clone = \"cloneNode\" in factory ? (factory.cloneNode as (n: T) => Mutable<T>)(n) : ({...n} as Mutable<T>);\n\t\t\t\t\t\t\tclone.name = name;\n\t\t\t\t\t\t\treturn clone as T;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\treplacePropertyName\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\n\t\t\t...(missingCreateJSDocMemberName\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createJSDocMemberName(left: TS.EntityName | TS.JSDocMemberName, right: TS.Identifier): TS.JSDocMemberName {\n\t\t\t\t\t\t\tconst base = factory.createJSDocComment(undefined, undefined) as unknown as Mutable<TS.JSDoc>;\n\t\t\t\t\t\t\tdelete base.comment;\n\t\t\t\t\t\t\tdelete base.tags;\n\n\t\t\t\t\t\t\tconst node = base as unknown as Mutable<TS.JSDocMemberName>;\n\n\t\t\t\t\t\t\tnode.left = left;\n\t\t\t\t\t\t\tnode.right = right;\n\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateJSDocMemberName(node: TS.JSDocMemberName, left: TS.EntityName | TS.JSDocMemberName, right: TS.Identifier): TS.JSDocMemberName {\n\t\t\t\t\t\t\treturn left === node.left && right === node.right ? node : update(createJSDocMemberName(left, right), node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateJSDocMemberName,\n\t\t\t\t\t\t\tupdateJSDocMemberName\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\t\t\t...(missingCreateJSDocLinkCode\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createJSDocLinkCode(name: TS.EntityName | TS.JSDocMemberName | undefined, text: string): TS.JSDocLinkCode {\n\t\t\t\t\t\t\tconst base = factory.createJSDocComment(undefined, undefined) as unknown as Mutable<TS.JSDoc>;\n\t\t\t\t\t\t\tdelete base.comment;\n\t\t\t\t\t\t\tdelete base.tags;\n\n\t\t\t\t\t\t\tconst node = base as unknown as Mutable<TS.JSDocLinkCode>;\n\n\t\t\t\t\t\t\tnode.name = name;\n\t\t\t\t\t\t\tnode.text = text;\n\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateJSDocLinkCode(node: TS.JSDocLinkCode, name: TS.EntityName | TS.JSDocMemberName | undefined, text: string): TS.JSDocLinkCode {\n\t\t\t\t\t\t\treturn name === node.name && text === node.text ? node : update(createJSDocLinkCode(name, text), node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateJSDocLinkCode,\n\t\t\t\t\t\t\tupdateJSDocLinkCode\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\t\t\t...(missingCreateJSDocLinkPlain\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createJSDocLinkPlain(name: TS.EntityName | TS.JSDocMemberName | undefined, text: string): TS.JSDocLinkPlain {\n\t\t\t\t\t\t\tconst base = factory.createJSDocComment(undefined, undefined) as unknown as Mutable<TS.JSDoc>;\n\t\t\t\t\t\t\tdelete base.comment;\n\t\t\t\t\t\t\tdelete base.tags;\n\n\t\t\t\t\t\t\tconst node = base as unknown as Mutable<TS.JSDocLinkPlain>;\n\n\t\t\t\t\t\t\tnode.name = name;\n\t\t\t\t\t\t\tnode.text = text;\n\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateJSDocLinkPlain(node: TS.JSDocLinkPlain, name: TS.EntityName | TS.JSDocMemberName | undefined, text: string): TS.JSDocLinkPlain {\n\t\t\t\t\t\t\treturn name === node.name && text === node.text ? node : update(createJSDocLinkPlain(name, text), node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateJSDocLinkPlain,\n\t\t\t\t\t\t\tupdateJSDocLinkPlain\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\t\t\t...(missingCreateJSDocOverloadTag\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createJSDocOverloadTag(\n\t\t\t\t\t\t\ttagName: TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeExpression: TS.JSDocSignature,\n\t\t\t\t\t\t\tcomment?: string | TS.NodeArray<TS.JSDocComment>\n\t\t\t\t\t\t): TS.JSDocOverloadTag {\n\t\t\t\t\t\t\tconst base = factory.createJSDocComment(undefined, undefined) as unknown as Mutable<TS.JSDoc>;\n\t\t\t\t\t\t\tdelete base.comment;\n\t\t\t\t\t\t\tdelete base.tags;\n\n\t\t\t\t\t\t\tconst node = base as unknown as Mutable<TS.JSDocOverloadTag>;\n\n\t\t\t\t\t\t\tif (tagName != null) node.tagName = tagName;\n\t\t\t\t\t\t\tnode.typeExpression = typeExpression;\n\t\t\t\t\t\t\tnode.comment = comment;\n\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateJSDocOverloadTag(\n\t\t\t\t\t\t\tnode: TS.JSDocOverloadTag,\n\t\t\t\t\t\t\ttagName: TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeExpression: TS.JSDocSignature,\n\t\t\t\t\t\t\tcomment?: string | TS.NodeArray<TS.JSDocComment>\n\t\t\t\t\t\t): TS.JSDocOverloadTag {\n\t\t\t\t\t\t\treturn tagName === node.tagName && typeExpression === node.typeExpression && comment === node.comment\n\t\t\t\t\t\t\t\t? node\n\t\t\t\t\t\t\t\t: update(createJSDocOverloadTag(tagName, typeExpression, comment), node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateJSDocOverloadTag,\n\t\t\t\t\t\t\tupdateJSDocOverloadTag\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\t\t\t...(missingCreateJSDocThrowsTag\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createJSDocThrowsTag(\n\t\t\t\t\t\t\ttagName: TS.Identifier,\n\t\t\t\t\t\t\ttypeExpression: TS.JSDocTypeExpression | undefined,\n\t\t\t\t\t\t\tcomment?: string | TS.NodeArray<TS.JSDocComment>\n\t\t\t\t\t\t): TS.JSDocThrowsTag {\n\t\t\t\t\t\t\tconst base = factory.createJSDocComment(undefined, undefined) as unknown as Mutable<TS.JSDoc>;\n\t\t\t\t\t\t\tdelete base.comment;\n\t\t\t\t\t\t\tdelete base.tags;\n\n\t\t\t\t\t\t\tconst node = base as unknown as Mutable<TS.JSDocThrowsTag>;\n\n\t\t\t\t\t\t\tif (tagName != null) node.tagName = tagName;\n\t\t\t\t\t\t\tnode.typeExpression = typeExpression;\n\t\t\t\t\t\t\tnode.comment = comment;\n\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateJSDocThrowsTag(\n\t\t\t\t\t\t\tnode: TS.JSDocThrowsTag,\n\t\t\t\t\t\t\ttagName: TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeExpression: TS.JSDocTypeExpression,\n\t\t\t\t\t\t\tcomment?: string | TS.NodeArray<TS.JSDocComment>\n\t\t\t\t\t\t): TS.JSDocThrowsTag {\n\t\t\t\t\t\t\treturn tagName === node.tagName && typeExpression === node.typeExpression && comment === node.comment\n\t\t\t\t\t\t\t\t? node\n\t\t\t\t\t\t\t\t: update(createJSDocThrowsTag(tagName ?? node.tagName, typeExpression, comment), node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateJSDocThrowsTag,\n\t\t\t\t\t\t\tupdateJSDocThrowsTag\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\t\t\t...(missingCreateJSDocSatisfiesTag\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createJSDocSatisfiesTag(\n\t\t\t\t\t\t\ttagName: TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeExpression: TS.JSDocTypeExpression,\n\t\t\t\t\t\t\tcomment?: string | TS.NodeArray<TS.JSDocComment>\n\t\t\t\t\t\t): TS.JSDocSatisfiesTag {\n\t\t\t\t\t\t\tconst base = factory.createJSDocComment(undefined, undefined) as unknown as Mutable<TS.JSDoc>;\n\t\t\t\t\t\t\tdelete base.comment;\n\t\t\t\t\t\t\tdelete base.tags;\n\n\t\t\t\t\t\t\tconst node = base as unknown as Mutable<TS.JSDocSatisfiesTag>;\n\n\t\t\t\t\t\t\tif (tagName != null) node.tagName = tagName;\n\t\t\t\t\t\t\tnode.typeExpression = typeExpression;\n\t\t\t\t\t\t\tnode.comment = comment;\n\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateJSDocSatisfiesTag(\n\t\t\t\t\t\t\tnode: TS.JSDocSatisfiesTag,\n\t\t\t\t\t\t\ttagName: TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeExpression: TS.JSDocTypeExpression,\n\t\t\t\t\t\t\tcomment: string | TS.NodeArray<TS.JSDocComment> | undefined\n\t\t\t\t\t\t): TS.JSDocSatisfiesTag {\n\t\t\t\t\t\t\treturn tagName === node.tagName && typeExpression === node.typeExpression && comment === node.comment\n\t\t\t\t\t\t\t\t? node\n\t\t\t\t\t\t\t\t: update(createJSDocSatisfiesTag(tagName, typeExpression, comment), node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateJSDocSatisfiesTag,\n\t\t\t\t\t\t\tupdateJSDocSatisfiesTag\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\t\t\t...(missingCreateJSDocImportTag\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createJSDocImportTag(\n\t\t\t\t\t\t\ttagName: TS.Identifier | undefined,\n\t\t\t\t\t\t\timportClause: TS.ImportClause | undefined,\n\t\t\t\t\t\t\tmoduleSpecifier: TS.Expression,\n\t\t\t\t\t\t\tattributes?: TS.ImportAttributes,\n\t\t\t\t\t\t\tcomment?: string | TS.NodeArray<TS.JSDocComment>\n\t\t\t\t\t\t): TS.JSDocImportTag {\n\t\t\t\t\t\t\tconst base = factory.createJSDocComment(undefined, undefined) as unknown as Mutable<TS.JSDoc>;\n\t\t\t\t\t\t\tdelete base.comment;\n\t\t\t\t\t\t\tdelete base.tags;\n\n\t\t\t\t\t\t\tconst node = base as unknown as Mutable<TS.JSDocImportTag>;\n\n\t\t\t\t\t\t\tif (tagName != null) node.tagName = tagName;\n\t\t\t\t\t\t\tnode.comment = comment;\n\t\t\t\t\t\t\tnode.importClause = importClause;\n\t\t\t\t\t\t\tnode.moduleSpecifier = moduleSpecifier;\n\t\t\t\t\t\t\tnode.attributes = attributes;\n\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateJSDocImportTag(\n\t\t\t\t\t\t\tnode: TS.JSDocImportTag,\n\t\t\t\t\t\t\ttagName: TS.Identifier | undefined,\n\t\t\t\t\t\t\timportClause: TS.ImportClause | undefined,\n\t\t\t\t\t\t\tmoduleSpecifier: TS.Expression,\n\t\t\t\t\t\t\tattributes: TS.ImportAttributes | undefined,\n\t\t\t\t\t\t\tcomment: string | TS.NodeArray<TS.JSDocComment> | undefined\n\t\t\t\t\t\t): TS.JSDocImportTag {\n\t\t\t\t\t\t\treturn tagName === node.tagName &&\n\t\t\t\t\t\t\t\timportClause === node.importClause &&\n\t\t\t\t\t\t\t\tcomment === node.comment &&\n\t\t\t\t\t\t\t\tmoduleSpecifier === node.moduleSpecifier &&\n\t\t\t\t\t\t\t\tattributes === node.attributes\n\t\t\t\t\t\t\t\t? node\n\t\t\t\t\t\t\t\t: update(createJSDocImportTag(tagName, importClause, moduleSpecifier, attributes, comment), node);\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateJSDocImportTag,\n\t\t\t\t\t\t\tupdateJSDocImportTag\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\t\t\t...(missingCreateJsxNamespacedName\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createJsxNamespacedName(namespace: TS.Identifier, name: TS.Identifier): TS.JsxNamespacedName {\n\t\t\t\t\t\t\tconst node = factory.createEmptyStatement() as unknown as Mutable<TS.JsxNamespacedName>;\n\t\t\t\t\t\t\tnode.namespace = namespace;\n\t\t\t\t\t\t\tnode.name = name;\n\n\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateJsxNamespacedName(node: TS.JsxNamespacedName, namespace: TS.Identifier, name: TS.Identifier): TS.JsxNamespacedName {\n\t\t\t\t\t\t\treturn node.namespace !== namespace || node.name !== name ? update(createJsxNamespacedName(namespace, name), node) : node;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateJsxNamespacedName,\n\t\t\t\t\t\t\tupdateJsxNamespacedName\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {}),\n\t\t\t...(badDecoratorsAsFirstArgument\n\t\t\t\t? (() => {\n\t\t\t\t\t\tfunction createParameterDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tdotDotDotToken: TS.DotDotDotToken | undefined,\n\t\t\t\t\t\t\tname: string | TS.BindingName,\n\t\t\t\t\t\t\tquestionToken?: TS.QuestionToken,\n\t\t\t\t\t\t\ttype?: TS.TypeNode,\n\t\t\t\t\t\t\tinitializer?: TS.Expression\n\t\t\t\t\t\t): TS.ParameterDeclaration;\n\t\t\t\t\t\tfunction createParameterDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tdotDotDotToken: TS.DotDotDotToken | undefined,\n\t\t\t\t\t\t\tname: string | TS.BindingName,\n\t\t\t\t\t\t\tquestionToken?: TS.QuestionToken,\n\t\t\t\t\t\t\ttype?: TS.TypeNode,\n\t\t\t\t\t\t\tinitializer?: TS.Expression\n\t\t\t\t\t\t): TS.ParameterDeclaration;\n\t\t\t\t\t\tfunction createParameterDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrDotDotDotToken: readonly TS.Modifier[] | TS.DotDotDotToken | undefined,\n\t\t\t\t\t\t\tdotDotDotTokenOrName: TS.DotDotDotToken | string | TS.BindingName | undefined,\n\t\t\t\t\t\t\tnameOrQuestionToken?: string | TS.BindingName | TS.QuestionToken,\n\t\t\t\t\t\t\tquestionTokenOrType?: TS.QuestionToken | TS.TypeNode,\n\t\t\t\t\t\t\ttypeOrInitializer?: TS.TypeNode | TS.Expression,\n\t\t\t\t\t\t\tinitializerOrUndefined?: TS.Expression\n\t\t\t\t\t\t): TS.ParameterDeclaration {\n\t\t\t\t\t\t\tconst isShort = typeof dotDotDotTokenOrName === \"string\" || (dotDotDotTokenOrName != null && dotDotDotTokenOrName.kind !== (25 as number)); /* DotDotDotToken */\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort\n\t\t\t\t\t\t\t\t? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1]\n\t\t\t\t\t\t\t\t: (modifiersOrDotDotDotToken as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst dotDotDotToken = (isShort ? modifiersOrDotDotDotToken : dotDotDotTokenOrName) as TS.DotDotDotToken | undefined;\n\t\t\t\t\t\t\tconst name = (isShort ? dotDotDotTokenOrName : nameOrQuestionToken) as string | TS.BindingName;\n\t\t\t\t\t\t\tconst questionToken = (isShort ? nameOrQuestionToken : questionTokenOrType) as TS.QuestionToken | undefined;\n\t\t\t\t\t\t\tconst type = (isShort ? questionTokenOrType : typeOrInitializer) as TS.TypeNode | undefined;\n\t\t\t\t\t\t\tconst initializer = (isShort ? typeOrInitializer : initializerOrUndefined) as TS.Expression | undefined;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createParameterDeclaration(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tdotDotDotToken as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tquestionToken as never,\n\t\t\t\t\t\t\t\ttype as never,\n\t\t\t\t\t\t\t\tinitializer as never\n\t\t\t\t\t\t\t) as unknown as TS.ParameterDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateParameterDeclaration(\n\t\t\t\t\t\t\tnode: TS.ParameterDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tdotDotDotToken: TS.DotDotDotToken | undefined,\n\t\t\t\t\t\t\tname: string | TS.BindingName,\n\t\t\t\t\t\t\tquestionToken?: TS.QuestionToken,\n\t\t\t\t\t\t\ttype?: TS.TypeNode,\n\t\t\t\t\t\t\tinitializer?: TS.Expression\n\t\t\t\t\t\t): TS.ParameterDeclaration;\n\t\t\t\t\t\tfunction updateParameterDeclaration(\n\t\t\t\t\t\t\tnode: TS.ParameterDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tdotDotDotToken: TS.DotDotDotToken | undefined,\n\t\t\t\t\t\t\tname: string | TS.BindingName,\n\t\t\t\t\t\t\tquestionToken?: TS.QuestionToken,\n\t\t\t\t\t\t\ttype?: TS.TypeNode,\n\t\t\t\t\t\t\tinitializer?: TS.Expression\n\t\t\t\t\t\t): TS.ParameterDeclaration;\n\t\t\t\t\t\tfunction updateParameterDeclaration(\n\t\t\t\t\t\t\tnode: TS.ParameterDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrDotDotDotToken: readonly TS.Modifier[] | TS.DotDotDotToken | undefined,\n\t\t\t\t\t\t\tdotDotDotTokenOrName: TS.DotDotDotToken | string | TS.BindingName | undefined,\n\t\t\t\t\t\t\tnameOrQuestionToken?: string | TS.BindingName | TS.QuestionToken,\n\t\t\t\t\t\t\tquestionTokenOrType?: TS.QuestionToken | TS.TypeNode,\n\t\t\t\t\t\t\ttypeOrInitializer?: TS.TypeNode | TS.Expression,\n\t\t\t\t\t\t\tinitializerOrUndefined?: TS.Expression\n\t\t\t\t\t\t): TS.ParameterDeclaration {\n\t\t\t\t\t\t\tconst isShort = typeof dotDotDotTokenOrName === \"string\" || (dotDotDotTokenOrName != null && dotDotDotTokenOrName.kind !== (25 as number)); /* DotDotDotToken */\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort\n\t\t\t\t\t\t\t\t? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1]\n\t\t\t\t\t\t\t\t: (modifiersOrDotDotDotToken as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst dotDotDotToken = (isShort ? modifiersOrDotDotDotToken : dotDotDotTokenOrName) as TS.DotDotDotToken | undefined;\n\t\t\t\t\t\t\tconst name = (isShort ? dotDotDotTokenOrName : nameOrQuestionToken) as string | TS.BindingName;\n\t\t\t\t\t\t\tconst questionToken = (isShort ? nameOrQuestionToken : questionTokenOrType) as TS.QuestionToken | undefined;\n\t\t\t\t\t\t\tconst type = (isShort ? questionTokenOrType : typeOrInitializer) as TS.TypeNode | undefined;\n\t\t\t\t\t\t\tconst initializer = (isShort ? typeOrInitializer : initializerOrUndefined) as TS.Expression | undefined;\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateParameterDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tdotDotDotToken as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tquestionToken as never,\n\t\t\t\t\t\t\t\ttype as never,\n\t\t\t\t\t\t\t\tinitializer as never\n\t\t\t\t\t\t\t) as unknown as TS.ParameterDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createPropertyDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName,\n\t\t\t\t\t\t\tquestionOrExclamationToken: TS.QuestionToken | TS.ExclamationToken | undefined,\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tinitializer: TS.Expression | undefined\n\t\t\t\t\t\t): TS.PropertyDeclaration;\n\t\t\t\t\t\tfunction createPropertyDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName,\n\t\t\t\t\t\t\tquestionOrExclamationToken: TS.QuestionToken | TS.ExclamationToken | undefined,\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tinitializer: TS.Expression | undefined\n\t\t\t\t\t\t): TS.PropertyDeclaration;\n\t\t\t\t\t\tfunction createPropertyDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.PropertyName | undefined,\n\t\t\t\t\t\t\tnameOrQuestionOrExclamationToken: string | TS.PropertyName | TS.QuestionToken | TS.ExclamationToken | undefined,\n\t\t\t\t\t\t\tquestionOrExclamationTokenOrType: TS.QuestionToken | TS.ExclamationToken | TS.TypeNode | undefined,\n\t\t\t\t\t\t\ttypeOrInitializer: TS.TypeNode | TS.Expression | undefined,\n\t\t\t\t\t\t\tinitializerOrUndefined?: TS.Expression\n\t\t\t\t\t\t): TS.PropertyDeclaration {\n\t\t\t\t\t\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName));\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrQuestionOrExclamationToken) as string | TS.PropertyName;\n\t\t\t\t\t\t\tconst questionOrExclamationToken = (isShort ? nameOrQuestionOrExclamationToken : questionOrExclamationTokenOrType) as\n\t\t\t\t\t\t\t\t| TS.QuestionToken\n\t\t\t\t\t\t\t\t| TS.ExclamationToken\n\t\t\t\t\t\t\t\t| undefined;\n\t\t\t\t\t\t\tconst type = (isShort ? questionOrExclamationTokenOrType : typeOrInitializer) as TS.TypeNode | undefined;\n\t\t\t\t\t\t\tconst initializer = (isShort ? typeOrInitializer : initializerOrUndefined) as TS.Expression | undefined;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createPropertyDeclaration(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tquestionOrExclamationToken as never,\n\t\t\t\t\t\t\t\ttype as never,\n\t\t\t\t\t\t\t\tinitializer as never\n\t\t\t\t\t\t\t) as unknown as TS.PropertyDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updatePropertyDeclaration(\n\t\t\t\t\t\t\tnode: TS.PropertyDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName,\n\t\t\t\t\t\t\tquestionOrExclamationToken: TS.QuestionToken | TS.ExclamationToken | undefined,\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tinitializer: TS.Expression | undefined\n\t\t\t\t\t\t): TS.PropertyDeclaration;\n\t\t\t\t\t\tfunction updatePropertyDeclaration(\n\t\t\t\t\t\t\tnode: TS.PropertyDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName,\n\t\t\t\t\t\t\tquestionOrExclamationToken: TS.QuestionToken | TS.ExclamationToken | undefined,\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tinitializer: TS.Expression | undefined\n\t\t\t\t\t\t): TS.PropertyDeclaration;\n\t\t\t\t\t\tfunction updatePropertyDeclaration(\n\t\t\t\t\t\t\tnode: TS.PropertyDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.PropertyName | undefined,\n\t\t\t\t\t\t\tnameOrQuestionOrExclamationToken: string | TS.PropertyName | TS.QuestionToken | TS.ExclamationToken | undefined,\n\t\t\t\t\t\t\tquestionOrExclamationTokenOrType: TS.QuestionToken | TS.ExclamationToken | TS.TypeNode | undefined,\n\t\t\t\t\t\t\ttypeOrInitializer: TS.TypeNode | TS.Expression | undefined,\n\t\t\t\t\t\t\tinitializerOrUndefined?: TS.Expression\n\t\t\t\t\t\t): TS.PropertyDeclaration {\n\t\t\t\t\t\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName));\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrQuestionOrExclamationToken) as string | TS.PropertyName;\n\t\t\t\t\t\t\tconst questionOrExclamationToken = (isShort ? nameOrQuestionOrExclamationToken : questionOrExclamationTokenOrType) as\n\t\t\t\t\t\t\t\t| TS.QuestionToken\n\t\t\t\t\t\t\t\t| TS.ExclamationToken\n\t\t\t\t\t\t\t\t| undefined;\n\t\t\t\t\t\t\tconst type = (isShort ? questionOrExclamationTokenOrType : typeOrInitializer) as TS.TypeNode | undefined;\n\t\t\t\t\t\t\tconst initializer = (isShort ? typeOrInitializer : initializerOrUndefined) as TS.Expression | undefined;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updatePropertyDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tquestionOrExclamationToken as never,\n\t\t\t\t\t\t\t\ttype as never,\n\t\t\t\t\t\t\t\tinitializer as never\n\t\t\t\t\t\t\t) as unknown as TS.PropertyDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createMethodDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName | undefined,\n\t\t\t\t\t\t\tquestionToken: TS.QuestionToken | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.MethodDeclaration;\n\t\t\t\t\t\tfunction createMethodDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName | undefined,\n\t\t\t\t\t\t\tquestionToken: TS.QuestionToken | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.MethodDeclaration;\n\t\t\t\t\t\tfunction createMethodDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrAsteriskToken: TS.AsteriskToken | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tasteriskTokenOrName: TS.AsteriskToken | string | TS.PropertyName | undefined,\n\t\t\t\t\t\t\tnameOrQuestionToken: string | TS.PropertyName | TS.QuestionToken | undefined,\n\t\t\t\t\t\t\tquestionTokenOrTypeParameters: TS.QuestionToken | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttypeParametersOrParameters: readonly TS.TypeParameterDeclaration[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparametersOrType: TS.TypeNode | readonly TS.ParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttypeOrBody: TS.TypeNode | TS.Block | undefined,\n\t\t\t\t\t\t\tbodyOrUndefined?: TS.Block\n\t\t\t\t\t\t): TS.MethodDeclaration {\n\t\t\t\t\t\t\tconst isShort = typeof asteriskTokenOrName === \"string\" || (asteriskTokenOrName != null && asteriskTokenOrName.kind !== (41 as number)); /* AsteriskToken */\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort\n\t\t\t\t\t\t\t\t? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1]\n\t\t\t\t\t\t\t\t: (modifiersOrAsteriskToken as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst asteriskToken = (isShort ? modifiersOrAsteriskToken : asteriskTokenOrName) as TS.AsteriskToken | undefined;\n\t\t\t\t\t\t\tconst name = (isShort ? asteriskTokenOrName : nameOrQuestionToken) as string | TS.PropertyName;\n\t\t\t\t\t\t\tconst questionToken = (isShort ? nameOrQuestionToken : questionTokenOrTypeParameters) as TS.QuestionToken | undefined;\n\t\t\t\t\t\t\tconst typeParameters = (isShort ? questionTokenOrTypeParameters : typeParametersOrParameters) as readonly TS.TypeParameterDeclaration[] | undefined;\n\t\t\t\t\t\t\tconst parameters = (isShort ? typeParametersOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[] | undefined;\n\t\t\t\t\t\t\tconst type = (isShort ? parametersOrType : typeOrBody) as TS.TypeNode | undefined;\n\t\t\t\t\t\t\tconst body = (isShort ? typeOrBody : bodyOrUndefined) as TS.Block | undefined;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createMethodDeclaration(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tasteriskToken as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tquestionToken as never,\n\t\t\t\t\t\t\t\ttypeParameters as never,\n\t\t\t\t\t\t\t\tparameters as never,\n\t\t\t\t\t\t\t\ttype as never,\n\t\t\t\t\t\t\t\tbody as never\n\t\t\t\t\t\t\t) as unknown as TS.MethodDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateMethodDeclaration(\n\t\t\t\t\t\t\tnode: TS.MethodDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName,\n\t\t\t\t\t\t\tquestionToken: TS.QuestionToken | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.MethodDeclaration;\n\t\t\t\t\t\tfunction updateMethodDeclaration(\n\t\t\t\t\t\t\tnode: TS.MethodDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName | undefined,\n\t\t\t\t\t\t\tquestionToken: TS.QuestionToken | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.MethodDeclaration;\n\t\t\t\t\t\tfunction updateMethodDeclaration(\n\t\t\t\t\t\t\tnode: TS.MethodDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrAsteriskToken: TS.AsteriskToken | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tasteriskTokenOrName: TS.AsteriskToken | string | TS.PropertyName | undefined,\n\t\t\t\t\t\t\tnameOrQuestionToken: string | TS.PropertyName | TS.QuestionToken | undefined,\n\t\t\t\t\t\t\tquestionTokenOrTypeParameters: TS.QuestionToken | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttypeParametersOrParameters: readonly TS.TypeParameterDeclaration[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparametersOrType: TS.TypeNode | readonly TS.ParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttypeOrBody: TS.TypeNode | TS.Block | undefined,\n\t\t\t\t\t\t\tbodyOrUndefined?: TS.Block\n\t\t\t\t\t\t): TS.MethodDeclaration {\n\t\t\t\t\t\t\tconst isShort = typeof asteriskTokenOrName === \"string\" || (asteriskTokenOrName != null && asteriskTokenOrName.kind !== (41 as number)); /* AsteriskToken */\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort\n\t\t\t\t\t\t\t\t? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1]\n\t\t\t\t\t\t\t\t: (modifiersOrAsteriskToken as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst asteriskToken = (isShort ? modifiersOrAsteriskToken : asteriskTokenOrName) as TS.AsteriskToken | undefined;\n\t\t\t\t\t\t\tconst name = (isShort ? asteriskTokenOrName : nameOrQuestionToken) as string | TS.PropertyName;\n\t\t\t\t\t\t\tconst questionToken = (isShort ? nameOrQuestionToken : questionTokenOrTypeParameters) as TS.QuestionToken | undefined;\n\t\t\t\t\t\t\tconst typeParameters = (isShort ? questionTokenOrTypeParameters : typeParametersOrParameters) as readonly TS.TypeParameterDeclaration[] | undefined;\n\t\t\t\t\t\t\tconst parameters = (isShort ? typeParametersOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[] | undefined;\n\t\t\t\t\t\t\tconst type = (isShort ? parametersOrType : typeOrBody) as TS.TypeNode | undefined;\n\t\t\t\t\t\t\tconst body = (isShort ? typeOrBody : bodyOrUndefined) as TS.Block | undefined;\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateMethodDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tasteriskToken as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tquestionToken as never,\n\t\t\t\t\t\t\t\ttypeParameters as never,\n\t\t\t\t\t\t\t\tparameters as never,\n\t\t\t\t\t\t\t\ttype as never,\n\t\t\t\t\t\t\t\tbody as never\n\t\t\t\t\t\t\t) as unknown as TS.MethodDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createConstructorDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.ConstructorDeclaration;\n\t\t\t\t\t\tfunction createConstructorDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.ConstructorDeclaration;\n\t\t\t\t\t\tfunction createConstructorDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrParameters: readonly TS.Modifier[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparametersOrBody: readonly TS.ParameterDeclaration[] | TS.Block | undefined,\n\t\t\t\t\t\t\tbodyOrUndefined?: TS.Block\n\t\t\t\t\t\t): TS.ConstructorDeclaration {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 3;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrParameters as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst parameters = (isShort ? modifiersOrParameters : parametersOrBody) as readonly TS.ParameterDeclaration[] | undefined;\n\t\t\t\t\t\t\tconst body = (isShort ? parametersOrBody : bodyOrUndefined) as TS.Block | undefined;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createConstructorDeclaration(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tparameters as never,\n\t\t\t\t\t\t\t\tbody as never\n\t\t\t\t\t\t\t) as unknown as TS.ConstructorDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateConstructorDeclaration(\n\t\t\t\t\t\t\tnode: TS.ConstructorDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.ConstructorDeclaration;\n\t\t\t\t\t\tfunction updateConstructorDeclaration(\n\t\t\t\t\t\t\tnode: TS.ConstructorDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.ConstructorDeclaration;\n\t\t\t\t\t\tfunction updateConstructorDeclaration(\n\t\t\t\t\t\t\tnode: TS.ConstructorDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrParameters: readonly TS.Modifier[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparametersOrBody: readonly TS.ParameterDeclaration[] | TS.Block | undefined,\n\t\t\t\t\t\t\tbodyOrUndefined?: TS.Block\n\t\t\t\t\t\t): TS.ConstructorDeclaration {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 4;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrParameters as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst parameters = (isShort ? modifiersOrParameters : parametersOrBody) as readonly TS.ParameterDeclaration[] | undefined;\n\t\t\t\t\t\t\tconst body = (isShort ? parametersOrBody : bodyOrUndefined) as TS.Block | undefined;\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateConstructorDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tparameters as never,\n\t\t\t\t\t\t\t\tbody as never\n\t\t\t\t\t\t\t) as unknown as TS.ConstructorDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createGetAccessorDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.GetAccessorDeclaration;\n\t\t\t\t\t\tfunction createGetAccessorDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.GetAccessorDeclaration;\n\t\t\t\t\t\tfunction createGetAccessorDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.ModifierLike[] | string | TS.PropertyName | undefined,\n\t\t\t\t\t\t\tnameOrParameters: string | TS.PropertyName | readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\tparametersOrType: readonly TS.ParameterDeclaration[] | TS.TypeNode | undefined,\n\t\t\t\t\t\t\ttypeOrBody: TS.TypeNode | TS.Block | undefined,\n\t\t\t\t\t\t\tbodyOrUndefined?: TS.Block\n\t\t\t\t\t\t): TS.GetAccessorDeclaration {\n\t\t\t\t\t\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName));\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrParameters) as string | TS.PropertyName;\n\t\t\t\t\t\t\tconst parameters = (isShort ? nameOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[] | undefined;\n\t\t\t\t\t\t\tconst type = (isShort ? parametersOrType : typeOrBody) as TS.TypeNode | undefined;\n\t\t\t\t\t\t\tconst body = (isShort ? typeOrBody : bodyOrUndefined) as TS.Block | undefined;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createGetAccessorDeclaration(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tparameters as never,\n\t\t\t\t\t\t\t\ttype as never,\n\t\t\t\t\t\t\t\tbody as never\n\t\t\t\t\t\t\t) as unknown as TS.GetAccessorDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateGetAccessorDeclaration(\n\t\t\t\t\t\t\tnode: TS.GetAccessorDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.GetAccessorDeclaration;\n\t\t\t\t\t\tfunction updateGetAccessorDeclaration(\n\t\t\t\t\t\t\tnode: TS.GetAccessorDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.GetAccessorDeclaration;\n\t\t\t\t\t\tfunction updateGetAccessorDeclaration(\n\t\t\t\t\t\t\tnode: TS.GetAccessorDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.ModifierLike[] | string | TS.PropertyName | undefined,\n\t\t\t\t\t\t\tnameOrParameters: string | TS.PropertyName | readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\tparametersOrType: readonly TS.ParameterDeclaration[] | TS.TypeNode | undefined,\n\t\t\t\t\t\t\ttypeOrBody: TS.TypeNode | TS.Block | undefined,\n\t\t\t\t\t\t\tbodyOrUndefined?: TS.Block\n\t\t\t\t\t\t): TS.GetAccessorDeclaration {\n\t\t\t\t\t\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName));\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrParameters) as string | TS.PropertyName;\n\t\t\t\t\t\t\tconst parameters = (isShort ? nameOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[] | undefined;\n\t\t\t\t\t\t\tconst type = (isShort ? parametersOrType : typeOrBody) as TS.TypeNode | undefined;\n\t\t\t\t\t\t\tconst body = (isShort ? typeOrBody : bodyOrUndefined) as TS.Block | undefined;\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateGetAccessorDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tparameters as never,\n\t\t\t\t\t\t\t\ttype as never,\n\t\t\t\t\t\t\t\tbody as never\n\t\t\t\t\t\t\t) as unknown as TS.GetAccessorDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createSetAccessorDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.SetAccessorDeclaration;\n\t\t\t\t\t\tfunction createSetAccessorDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.SetAccessorDeclaration;\n\t\t\t\t\t\tfunction createSetAccessorDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.ModifierLike[] | string | TS.PropertyName | undefined,\n\t\t\t\t\t\t\tnameOrParameters: string | TS.PropertyName | readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\tparametersOrBody: readonly TS.ParameterDeclaration[] | TS.Block | undefined,\n\t\t\t\t\t\t\tbodyOrUndefined?: TS.Block\n\t\t\t\t\t\t): TS.SetAccessorDeclaration {\n\t\t\t\t\t\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName));\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrParameters) as string | TS.PropertyName;\n\t\t\t\t\t\t\tconst parameters = (isShort ? nameOrParameters : parametersOrBody) as readonly TS.ParameterDeclaration[] | undefined;\n\t\t\t\t\t\t\tconst body = (isShort ? parametersOrBody : bodyOrUndefined) as TS.Block | undefined;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createSetAccessorDeclaration(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tparameters as never,\n\t\t\t\t\t\t\t\tbody as never\n\t\t\t\t\t\t\t) as unknown as TS.SetAccessorDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateSetAccessorDeclaration(\n\t\t\t\t\t\t\tnode: TS.SetAccessorDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.SetAccessorDeclaration;\n\t\t\t\t\t\tfunction updateSetAccessorDeclaration(\n\t\t\t\t\t\t\tnode: TS.SetAccessorDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.PropertyName,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.SetAccessorDeclaration;\n\t\t\t\t\t\tfunction updateSetAccessorDeclaration(\n\t\t\t\t\t\t\tnode: TS.SetAccessorDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.ModifierLike[] | string | TS.PropertyName | undefined,\n\t\t\t\t\t\t\tnameOrParameters: string | TS.PropertyName | readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\tparametersOrBody: readonly TS.ParameterDeclaration[] | TS.Block | undefined,\n\t\t\t\t\t\t\tbodyOrUndefined?: TS.Block\n\t\t\t\t\t\t): TS.SetAccessorDeclaration {\n\t\t\t\t\t\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName));\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrParameters) as string | TS.PropertyName;\n\t\t\t\t\t\t\tconst parameters = (isShort ? nameOrParameters : parametersOrBody) as readonly TS.ParameterDeclaration[] | undefined;\n\t\t\t\t\t\t\tconst body = (isShort ? parametersOrBody : bodyOrUndefined) as TS.Block | undefined;\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateSetAccessorDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tparameters as never,\n\t\t\t\t\t\t\t\tbody as never\n\t\t\t\t\t\t\t) as unknown as TS.SetAccessorDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createIndexSignature(\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode\n\t\t\t\t\t\t): TS.IndexSignatureDeclaration;\n\t\t\t\t\t\tfunction createIndexSignature(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode\n\t\t\t\t\t\t): TS.IndexSignatureDeclaration;\n\t\t\t\t\t\tfunction createIndexSignature(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrParameters: readonly TS.Modifier[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparametersOrType: readonly TS.ParameterDeclaration[] | TS.TypeNode,\n\t\t\t\t\t\t\ttypeOrUndefined?: TS.TypeNode\n\t\t\t\t\t\t): TS.IndexSignatureDeclaration {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 3;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrParameters as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst parameters = (isShort ? modifiersOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[];\n\t\t\t\t\t\t\tconst type = (isShort ? parametersOrType : typeOrUndefined) as TS.TypeNode;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createIndexSignature(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tparameters as never,\n\t\t\t\t\t\t\t\ttype as never\n\t\t\t\t\t\t\t) as unknown as TS.IndexSignatureDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateIndexSignature(\n\t\t\t\t\t\t\tnode: TS.IndexSignatureDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode\n\t\t\t\t\t\t): TS.IndexSignatureDeclaration;\n\t\t\t\t\t\tfunction updateIndexSignature(\n\t\t\t\t\t\t\tnode: TS.IndexSignatureDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode\n\t\t\t\t\t\t): TS.IndexSignatureDeclaration;\n\t\t\t\t\t\tfunction updateIndexSignature(\n\t\t\t\t\t\t\tnode: TS.IndexSignatureDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrParameters: readonly TS.Modifier[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparametersOrType: readonly TS.ParameterDeclaration[] | TS.TypeNode,\n\t\t\t\t\t\t\ttypeOrUndefined?: TS.TypeNode\n\t\t\t\t\t\t): TS.IndexSignatureDeclaration {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 4;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrParameters as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst parameters = (isShort ? modifiersOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[];\n\t\t\t\t\t\t\tconst type = (isShort ? parametersOrType : typeOrUndefined) as TS.TypeNode;\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateIndexSignature(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tparameters as never,\n\t\t\t\t\t\t\t\ttype as never\n\t\t\t\t\t\t\t) as unknown as TS.IndexSignatureDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createClassStaticBlockDeclaration(body: TS.Block): TS.ClassStaticBlockDeclaration;\n\t\t\t\t\t\tfunction createClassStaticBlockDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tbody: TS.Block\n\t\t\t\t\t\t): TS.ClassStaticBlockDeclaration;\n\t\t\t\t\t\tfunction createClassStaticBlockDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrBody: readonly TS.Decorator[] | TS.Block | undefined,\n\t\t\t\t\t\t\tmodifiersOrUndefined?: readonly TS.Modifier[],\n\t\t\t\t\t\t\tbodyOrUndefined?: TS.Block\n\t\t\t\t\t\t): TS.ClassStaticBlockDeclaration {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 1;\n\t\t\t\t\t\t\tconst body = (isShort ? decoratorsOrBody : bodyOrUndefined) as TS.Block;\n\n\t\t\t\t\t\t\tif (missingCreateClassStaticBlockDeclaration) {\n\t\t\t\t\t\t\t\tconst node = factory.createEmptyStatement() as unknown as Mutable<TS.ClassStaticBlockDeclaration>;\n\t\t\t\t\t\t\t\tnode.body = body;\n\t\t\t\t\t\t\t\t(node as NodeWithInternalFlags).transformFlags = 8388608 /* ContainsClassFields */;\n\t\t\t\t\t\t\t\treturn node;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn ts4CastFactory.createClassStaticBlockDeclaration(undefined, undefined, body as never) as never;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateClassStaticBlockDeclaration(node: TS.ClassStaticBlockDeclaration, body: TS.Block): TS.ClassStaticBlockDeclaration;\n\t\t\t\t\t\tfunction updateClassStaticBlockDeclaration(\n\t\t\t\t\t\t\tnode: TS.ClassStaticBlockDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tbody: TS.Block\n\t\t\t\t\t\t): TS.ClassStaticBlockDeclaration;\n\t\t\t\t\t\tfunction updateClassStaticBlockDeclaration(\n\t\t\t\t\t\t\tnode: TS.ClassStaticBlockDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrBody: readonly TS.Decorator[] | TS.Block | undefined,\n\t\t\t\t\t\t\tmodifiersOrUndefined?: readonly TS.Modifier[],\n\t\t\t\t\t\t\tbodyOrUndefined?: TS.Block\n\t\t\t\t\t\t): TS.ClassStaticBlockDeclaration {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 2;\n\t\t\t\t\t\t\tconst body = (isShort ? decoratorsOrBody : bodyOrUndefined) as TS.Block;\n\n\t\t\t\t\t\t\tif (missingCreateClassStaticBlockDeclaration) {\n\t\t\t\t\t\t\t\treturn body === node.body ? node : update(createClassStaticBlockDeclaration(body), node);\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn ts4CastFactory.updateClassStaticBlockDeclaration(node as never, undefined, undefined, body as never) as never;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createClassExpression(\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\tmembers: readonly TS.ClassElement[]\n\t\t\t\t\t\t): TS.ClassExpression;\n\t\t\t\t\t\tfunction createClassExpression(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\tmembers: readonly TS.ClassElement[]\n\t\t\t\t\t\t): TS.ClassExpression;\n\t\t\t\t\t\tfunction createClassExpression(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.ModifierLike[] | string | TS.Identifier | undefined,\n\t\t\t\t\t\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttypeParametersOrHeritageClauses: readonly TS.TypeParameterDeclaration[] | readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\theritageClausesOrMembers: readonly TS.HeritageClause[] | readonly TS.ClassElement[] | undefined,\n\t\t\t\t\t\t\tmembersOrUndefined?: readonly TS.ClassElement[]\n\t\t\t\t\t\t): TS.ClassExpression {\n\t\t\t\t\t\t\tconst isShort =\n\t\t\t\t\t\t\t\ttypeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrHeritageClauses) as readonly TS.TypeParameterDeclaration[];\n\t\t\t\t\t\t\tconst heritageClauses = (isShort ? typeParametersOrHeritageClauses : heritageClausesOrMembers) as readonly TS.HeritageClause[] | undefined;\n\t\t\t\t\t\t\tconst members = (isShort ? heritageClausesOrMembers : membersOrUndefined) as TS.ClassElement[];\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createClassExpression(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\ttypeParameters as never,\n\t\t\t\t\t\t\t\theritageClauses as never,\n\t\t\t\t\t\t\t\tmembers as never\n\t\t\t\t\t\t\t) as unknown as TS.ClassExpression;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateClassExpression(\n\t\t\t\t\t\t\tnode: TS.ClassExpression,\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\tmembers: readonly TS.ClassElement[]\n\t\t\t\t\t\t): TS.ClassExpression;\n\t\t\t\t\t\tfunction updateClassExpression(\n\t\t\t\t\t\t\tnode: TS.ClassExpression,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\tmembers: readonly TS.ClassElement[]\n\t\t\t\t\t\t): TS.ClassExpression;\n\t\t\t\t\t\tfunction updateClassExpression(\n\t\t\t\t\t\t\tnode: TS.ClassExpression,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.ModifierLike[] | string | TS.Identifier | undefined,\n\t\t\t\t\t\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttypeParametersOrHeritageClauses: readonly TS.TypeParameterDeclaration[] | readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\theritageClausesOrMembers: readonly TS.HeritageClause[] | readonly TS.ClassElement[] | undefined,\n\t\t\t\t\t\t\tmembersOrUndefined?: readonly TS.ClassElement[]\n\t\t\t\t\t\t): TS.ClassExpression {\n\t\t\t\t\t\t\tconst isShort =\n\t\t\t\t\t\t\t\ttypeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrHeritageClauses) as readonly TS.TypeParameterDeclaration[];\n\t\t\t\t\t\t\tconst heritageClauses = (isShort ? typeParametersOrHeritageClauses : heritageClausesOrMembers) as readonly TS.HeritageClause[] | undefined;\n\t\t\t\t\t\t\tconst members = (isShort ? heritageClausesOrMembers : membersOrUndefined) as TS.ClassElement[];\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateClassExpression(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\ttypeParameters as never,\n\t\t\t\t\t\t\t\theritageClauses as never,\n\t\t\t\t\t\t\t\tmembers as never\n\t\t\t\t\t\t\t) as unknown as TS.ClassExpression;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createFunctionDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.FunctionDeclaration;\n\t\t\t\t\t\tfunction createFunctionDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.FunctionDeclaration;\n\t\t\t\t\t\tfunction createFunctionDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrAsteriskToken: readonly TS.Modifier[] | TS.AsteriskToken | undefined,\n\t\t\t\t\t\t\tasteriskTokenOrName: TS.AsteriskToken | string | TS.Identifier | undefined,\n\t\t\t\t\t\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttypeParametersOrParameters: readonly TS.TypeParameterDeclaration[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparametersOrType: readonly TS.ParameterDeclaration[] | TS.TypeNode | undefined,\n\t\t\t\t\t\t\ttypeOrBody: TS.TypeNode | TS.Block | undefined,\n\t\t\t\t\t\t\tbodyOrUndefined?: TS.Block\n\t\t\t\t\t\t): TS.FunctionDeclaration {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 7;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort\n\t\t\t\t\t\t\t\t? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1]\n\t\t\t\t\t\t\t\t: (modifiersOrAsteriskToken as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst asteriskToken = (isShort ? modifiersOrAsteriskToken : asteriskTokenOrName) as TS.AsteriskToken | undefined;\n\t\t\t\t\t\t\tconst name = (isShort ? asteriskTokenOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrParameters) as readonly TS.TypeParameterDeclaration[];\n\t\t\t\t\t\t\tconst parameters = (isShort ? typeParametersOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[] | undefined;\n\t\t\t\t\t\t\tconst type = (isShort ? parametersOrType : typeOrBody) as TS.TypeNode;\n\t\t\t\t\t\t\tconst body = (isShort ? typeOrBody : bodyOrUndefined) as TS.Block | undefined;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createFunctionDeclaration(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tasteriskToken as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\ttypeParameters as never,\n\t\t\t\t\t\t\t\tparameters as never,\n\t\t\t\t\t\t\t\ttype as never,\n\t\t\t\t\t\t\t\tbody as never\n\t\t\t\t\t\t\t) as unknown as TS.FunctionDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateFunctionDeclaration(\n\t\t\t\t\t\t\tnode: TS.FunctionDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.FunctionDeclaration;\n\t\t\t\t\t\tfunction updateFunctionDeclaration(\n\t\t\t\t\t\t\tnode: TS.FunctionDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\t\t\t\t\ttype: TS.TypeNode | undefined,\n\t\t\t\t\t\t\tbody: TS.Block | undefined\n\t\t\t\t\t\t): TS.FunctionDeclaration;\n\t\t\t\t\t\tfunction updateFunctionDeclaration(\n\t\t\t\t\t\t\tnode: TS.FunctionDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrAsteriskToken: readonly TS.Modifier[] | TS.AsteriskToken | undefined,\n\t\t\t\t\t\t\tasteriskTokenOrName: TS.AsteriskToken | string | TS.Identifier | undefined,\n\t\t\t\t\t\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttypeParametersOrParameters: readonly TS.TypeParameterDeclaration[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\tparametersOrType: readonly TS.ParameterDeclaration[] | TS.TypeNode | undefined,\n\t\t\t\t\t\t\ttypeOrBody: TS.TypeNode | TS.Block | undefined,\n\t\t\t\t\t\t\tbodyOrUndefined?: TS.Block\n\t\t\t\t\t\t): TS.FunctionDeclaration {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 8;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort\n\t\t\t\t\t\t\t\t? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1]\n\t\t\t\t\t\t\t\t: (modifiersOrAsteriskToken as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst asteriskToken = (isShort ? modifiersOrAsteriskToken : asteriskTokenOrName) as TS.AsteriskToken | undefined;\n\t\t\t\t\t\t\tconst name = (isShort ? asteriskTokenOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrParameters) as readonly TS.TypeParameterDeclaration[];\n\t\t\t\t\t\t\tconst parameters = (isShort ? typeParametersOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[] | undefined;\n\t\t\t\t\t\t\tconst type = (isShort ? parametersOrType : typeOrBody) as TS.TypeNode;\n\t\t\t\t\t\t\tconst body = (isShort ? typeOrBody : bodyOrUndefined) as TS.Block | undefined;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateFunctionDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tasteriskToken as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\ttypeParameters as never,\n\t\t\t\t\t\t\t\tparameters as never,\n\t\t\t\t\t\t\t\ttype as never,\n\t\t\t\t\t\t\t\tbody as never\n\t\t\t\t\t\t\t) as unknown as TS.FunctionDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createClassDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\tmembers: readonly TS.ClassElement[]\n\t\t\t\t\t\t): TS.ClassDeclaration;\n\t\t\t\t\t\tfunction createClassDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\tmembers: readonly TS.ClassElement[]\n\t\t\t\t\t\t): TS.ClassDeclaration;\n\t\t\t\t\t\tfunction createClassDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\t\t\t\t\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttypeParametersOrHeritageClauses: readonly TS.TypeParameterDeclaration[] | readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\theritageClausesOrMembers: readonly TS.HeritageClause[] | readonly TS.ClassElement[] | undefined,\n\t\t\t\t\t\t\tmembersOrUndefined?: readonly TS.ClassElement[]\n\t\t\t\t\t\t): TS.ClassDeclaration {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 5;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrHeritageClauses) as readonly TS.TypeParameterDeclaration[];\n\t\t\t\t\t\t\tconst heritageClauses = (isShort ? typeParametersOrHeritageClauses : heritageClausesOrMembers) as readonly TS.HeritageClause[] | undefined;\n\t\t\t\t\t\t\tconst members = (isShort ? heritageClausesOrMembers : membersOrUndefined) as TS.ClassElement[];\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createClassDeclaration(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\ttypeParameters as never,\n\t\t\t\t\t\t\t\theritageClauses as never,\n\t\t\t\t\t\t\t\tmembers as never\n\t\t\t\t\t\t\t) as unknown as TS.ClassDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateClassDeclaration(\n\t\t\t\t\t\t\tnode: TS.ClassDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\tmembers: readonly TS.ClassElement[]\n\t\t\t\t\t\t): TS.ClassDeclaration;\n\t\t\t\t\t\tfunction updateClassDeclaration(\n\t\t\t\t\t\t\tnode: TS.ClassDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier | undefined,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\tmembers: readonly TS.ClassElement[]\n\t\t\t\t\t\t): TS.ClassDeclaration;\n\t\t\t\t\t\tfunction updateClassDeclaration(\n\t\t\t\t\t\t\tnode: TS.ClassDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\t\t\t\t\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttypeParametersOrHeritageClauses: readonly TS.TypeParameterDeclaration[] | readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\theritageClausesOrMembers: readonly TS.HeritageClause[] | readonly TS.ClassElement[] | undefined,\n\t\t\t\t\t\t\tmembersOrUndefined?: readonly TS.ClassElement[]\n\t\t\t\t\t\t): TS.ClassDeclaration {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 6;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrHeritageClauses) as readonly TS.TypeParameterDeclaration[];\n\t\t\t\t\t\t\tconst heritageClauses = (isShort ? typeParametersOrHeritageClauses : heritageClausesOrMembers) as readonly TS.HeritageClause[] | undefined;\n\t\t\t\t\t\t\tconst members = (isShort ? heritageClausesOrMembers : membersOrUndefined) as TS.ClassElement[];\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateClassDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\ttypeParameters as never,\n\t\t\t\t\t\t\t\theritageClauses as never,\n\t\t\t\t\t\t\t\tmembers as never\n\t\t\t\t\t\t\t) as unknown as TS.ClassDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createInterfaceDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\tmembers: readonly TS.TypeElement[]\n\t\t\t\t\t\t): TS.InterfaceDeclaration;\n\t\t\t\t\t\tfunction createInterfaceDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\tmembers: readonly TS.TypeElement[]\n\t\t\t\t\t\t): TS.InterfaceDeclaration;\n\t\t\t\t\t\tfunction createInterfaceDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\t\t\t\t\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttypeParametersOrHeritageClauses: readonly TS.TypeParameterDeclaration[] | readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\theritageClausesOrMembers: readonly TS.HeritageClause[] | readonly TS.TypeElement[] | undefined,\n\t\t\t\t\t\t\tmembersOrUndefined?: readonly TS.TypeElement[]\n\t\t\t\t\t\t): TS.InterfaceDeclaration {\n\t\t\t\t\t\t\tconst isShort =\n\t\t\t\t\t\t\t\ttypeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrHeritageClauses) as readonly TS.TypeParameterDeclaration[];\n\t\t\t\t\t\t\tconst heritageClauses = (isShort ? typeParametersOrHeritageClauses : heritageClausesOrMembers) as readonly TS.HeritageClause[] | undefined;\n\t\t\t\t\t\t\tconst members = (isShort ? heritageClausesOrMembers : membersOrUndefined) as TS.TypeElement[];\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createInterfaceDeclaration(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\ttypeParameters as never,\n\t\t\t\t\t\t\t\theritageClauses as never,\n\t\t\t\t\t\t\t\tmembers as never\n\t\t\t\t\t\t\t) as unknown as TS.InterfaceDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateInterfaceDeclaration(\n\t\t\t\t\t\t\tnode: TS.InterfaceDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\tmembers: readonly TS.TypeElement[]\n\t\t\t\t\t\t): TS.InterfaceDeclaration;\n\t\t\t\t\t\tfunction updateInterfaceDeclaration(\n\t\t\t\t\t\t\tnode: TS.InterfaceDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\tmembers: readonly TS.TypeElement[]\n\t\t\t\t\t\t): TS.InterfaceDeclaration;\n\t\t\t\t\t\tfunction updateInterfaceDeclaration(\n\t\t\t\t\t\t\tnode: TS.InterfaceDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\t\t\t\t\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttypeParametersOrHeritageClauses: readonly TS.TypeParameterDeclaration[] | readonly TS.HeritageClause[] | undefined,\n\t\t\t\t\t\t\theritageClausesOrMembers: readonly TS.HeritageClause[] | readonly TS.TypeElement[] | undefined,\n\t\t\t\t\t\t\tmembersOrUndefined?: readonly TS.TypeElement[]\n\t\t\t\t\t\t): TS.InterfaceDeclaration {\n\t\t\t\t\t\t\tconst isShort =\n\t\t\t\t\t\t\t\ttypeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrHeritageClauses) as readonly TS.TypeParameterDeclaration[];\n\t\t\t\t\t\t\tconst heritageClauses = (isShort ? typeParametersOrHeritageClauses : heritageClausesOrMembers) as readonly TS.HeritageClause[] | undefined;\n\t\t\t\t\t\t\tconst members = (isShort ? heritageClausesOrMembers : membersOrUndefined) as TS.TypeElement[];\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateInterfaceDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\ttypeParameters as never,\n\t\t\t\t\t\t\t\theritageClauses as never,\n\t\t\t\t\t\t\t\tmembers as never\n\t\t\t\t\t\t\t) as unknown as TS.InterfaceDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createTypeAliasDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttype: TS.TypeNode\n\t\t\t\t\t\t): TS.TypeAliasDeclaration;\n\t\t\t\t\t\tfunction createTypeAliasDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttype: TS.TypeNode\n\t\t\t\t\t\t): TS.TypeAliasDeclaration;\n\t\t\t\t\t\tfunction createTypeAliasDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\t\t\t\t\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttypeParametersOrType: readonly TS.TypeParameterDeclaration[] | TS.TypeNode | undefined,\n\t\t\t\t\t\t\ttypeOrUndefined?: TS.TypeNode\n\t\t\t\t\t\t): TS.TypeAliasDeclaration {\n\t\t\t\t\t\t\tconst isShort =\n\t\t\t\t\t\t\t\ttypeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrType) as readonly TS.TypeParameterDeclaration[];\n\t\t\t\t\t\t\tconst type = (isShort ? typeParametersOrType : typeOrUndefined) as TS.TypeNode[] | undefined;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createTypeAliasDeclaration(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\ttypeParameters as never,\n\t\t\t\t\t\t\t\ttype as never\n\t\t\t\t\t\t\t) as unknown as TS.TypeAliasDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateTypeAliasDeclaration(\n\t\t\t\t\t\t\tnode: TS.TypeAliasDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttype: TS.TypeNode\n\t\t\t\t\t\t): TS.TypeAliasDeclaration;\n\t\t\t\t\t\tfunction updateTypeAliasDeclaration(\n\t\t\t\t\t\t\tnode: TS.TypeAliasDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttype: TS.TypeNode\n\t\t\t\t\t\t): TS.TypeAliasDeclaration;\n\t\t\t\t\t\tfunction updateTypeAliasDeclaration(\n\t\t\t\t\t\t\tnode: TS.TypeAliasDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\t\t\t\t\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\t\t\t\t\ttypeParametersOrType: readonly TS.TypeParameterDeclaration[] | TS.TypeNode | undefined,\n\t\t\t\t\t\t\ttypeOrUndefined?: TS.TypeNode\n\t\t\t\t\t\t): TS.TypeAliasDeclaration {\n\t\t\t\t\t\t\tconst isShort =\n\t\t\t\t\t\t\t\ttypeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrType) as readonly TS.TypeParameterDeclaration[];\n\t\t\t\t\t\t\tconst type = (isShort ? typeParametersOrType : typeOrUndefined) as TS.TypeNode[] | undefined;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateTypeAliasDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\ttypeParameters as never,\n\t\t\t\t\t\t\t\ttype as never\n\t\t\t\t\t\t\t) as unknown as TS.TypeAliasDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createEnumDeclaration(modifiers: readonly TS.Modifier[] | undefined, name: string | TS.Identifier, members: readonly TS.EnumMember[]): TS.EnumDeclaration;\n\t\t\t\t\t\tfunction createEnumDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[],\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\tmembers: readonly TS.EnumMember[]\n\t\t\t\t\t\t): TS.EnumDeclaration;\n\t\t\t\t\t\tfunction createEnumDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\t\t\t\t\t\tnameOrMembers: string | TS.Identifier | readonly TS.EnumMember[],\n\t\t\t\t\t\t\tmembersOrUndefined?: readonly TS.EnumMember[]\n\t\t\t\t\t\t): TS.EnumDeclaration {\n\t\t\t\t\t\t\tconst isShort =\n\t\t\t\t\t\t\t\ttypeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrMembers) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst members = (isShort ? nameOrMembers : membersOrUndefined) as readonly TS.EnumMember[];\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createEnumDeclaration(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tmembers as never\n\t\t\t\t\t\t\t) as unknown as TS.EnumDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateEnumDeclaration(\n\t\t\t\t\t\t\tnode: TS.EnumDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\tmembers: readonly TS.EnumMember[]\n\t\t\t\t\t\t): TS.EnumDeclaration;\n\t\t\t\t\t\tfunction updateEnumDeclaration(\n\t\t\t\t\t\t\tnode: TS.EnumDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[],\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\tmembers: readonly TS.EnumMember[]\n\t\t\t\t\t\t): TS.EnumDeclaration;\n\t\t\t\t\t\tfunction updateEnumDeclaration(\n\t\t\t\t\t\t\tnode: TS.EnumDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\t\t\t\t\t\tnameOrMembers: string | TS.Identifier | readonly TS.EnumMember[],\n\t\t\t\t\t\t\tmembersOrUndefined?: readonly TS.EnumMember[]\n\t\t\t\t\t\t): TS.EnumDeclaration {\n\t\t\t\t\t\t\tconst isShort =\n\t\t\t\t\t\t\t\ttypeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrMembers) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst members = (isShort ? nameOrMembers : membersOrUndefined) as readonly TS.EnumMember[];\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateEnumDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tmembers as never\n\t\t\t\t\t\t\t) as unknown as TS.EnumDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createModuleDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: TS.ModuleName,\n\t\t\t\t\t\t\tbody: TS.ModuleBody | undefined,\n\t\t\t\t\t\t\tflags?: TS.NodeFlags\n\t\t\t\t\t\t): TS.ModuleDeclaration;\n\t\t\t\t\t\tfunction createModuleDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: TS.ModuleName,\n\t\t\t\t\t\t\tbody: TS.ModuleBody | undefined,\n\t\t\t\t\t\t\tflags?: TS.NodeFlags\n\t\t\t\t\t\t): TS.ModuleDeclaration;\n\t\t\t\t\t\tfunction createModuleDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.Modifier[] | TS.ModuleName | undefined,\n\t\t\t\t\t\t\tnameOrBody: TS.ModuleName | TS.ModuleBody | undefined,\n\t\t\t\t\t\t\tbodyOrFlags: TS.ModuleBody | TS.NodeFlags | undefined,\n\t\t\t\t\t\t\tflagsOrUndefined?: TS.NodeFlags\n\t\t\t\t\t\t): TS.ModuleDeclaration {\n\t\t\t\t\t\t\tconst isShort =\n\t\t\t\t\t\t\t\ttypeof modifiersOrName === \"string\" ||\n\t\t\t\t\t\t\t\t(modifiersOrName != null &&\n\t\t\t\t\t\t\t\t\t!Array.isArray(modifiersOrName) &&\n\t\t\t\t\t\t\t\t\t(\"escapedText\" in modifiersOrName /* Identifier */ || \"_literalExpressionBrand\" in modifiersOrName)); /* StringLiteral */\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrBody) as TS.ModuleName;\n\t\t\t\t\t\t\tconst body = (isShort ? nameOrBody : bodyOrFlags) as TS.ModuleBody | undefined;\n\t\t\t\t\t\t\tconst flags = (isShort ? bodyOrFlags : flagsOrUndefined) as TS.NodeFlags | undefined;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createModuleDeclaration(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tbody as never,\n\t\t\t\t\t\t\t\tflags as never\n\t\t\t\t\t\t\t) as unknown as TS.ModuleDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateModuleDeclaration(\n\t\t\t\t\t\t\tnode: TS.ModuleDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: TS.ModuleName,\n\t\t\t\t\t\t\tbody: TS.ModuleBody | undefined\n\t\t\t\t\t\t): TS.ModuleDeclaration;\n\t\t\t\t\t\tfunction updateModuleDeclaration(\n\t\t\t\t\t\t\tnode: TS.ModuleDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tname: TS.ModuleName,\n\t\t\t\t\t\t\tbody: TS.ModuleBody | undefined\n\t\t\t\t\t\t): TS.ModuleDeclaration;\n\t\t\t\t\t\tfunction updateModuleDeclaration(\n\t\t\t\t\t\t\tnode: TS.ModuleDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrName: readonly TS.Modifier[] | TS.ModuleName | undefined,\n\t\t\t\t\t\t\tnameOrBody: TS.ModuleName | TS.ModuleBody | undefined,\n\t\t\t\t\t\t\tbodyOrUndefined?: TS.ModuleBody\n\t\t\t\t\t\t): TS.ModuleDeclaration {\n\t\t\t\t\t\t\tconst isShort =\n\t\t\t\t\t\t\t\ttypeof modifiersOrName === \"string\" ||\n\t\t\t\t\t\t\t\t(modifiersOrName != null &&\n\t\t\t\t\t\t\t\t\t!Array.isArray(modifiersOrName) &&\n\t\t\t\t\t\t\t\t\t(\"escapedText\" in modifiersOrName /* Identifier */ || \"_literalExpressionBrand\" in modifiersOrName)); /* StringLiteral */\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst name = (isShort ? modifiersOrName : nameOrBody) as TS.ModuleName;\n\t\t\t\t\t\t\tconst body = (isShort ? nameOrBody : bodyOrUndefined) as TS.ModuleBody | undefined;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateModuleDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\tbody as never\n\t\t\t\t\t\t\t) as unknown as TS.ModuleDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createImportEqualsDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tisTypeOnly: boolean,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\tmoduleReference: TS.ModuleReference\n\t\t\t\t\t\t): TS.ImportEqualsDeclaration;\n\t\t\t\t\t\tfunction createImportEqualsDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tisTypeOnly: boolean,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\tmoduleReference: TS.ModuleReference\n\t\t\t\t\t\t): TS.ImportEqualsDeclaration;\n\t\t\t\t\t\tfunction createImportEqualsDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrIsTypeOnly: readonly TS.Modifier[] | boolean | undefined,\n\t\t\t\t\t\t\tisTypeOnlyOrName: boolean | string | TS.Identifier,\n\t\t\t\t\t\t\tnameOrModuleReference: string | TS.Identifier | TS.ModuleReference,\n\t\t\t\t\t\t\tmoduleReferenceOrUndefined?: TS.ModuleReference\n\t\t\t\t\t\t): TS.ImportEqualsDeclaration {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 4;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrIsTypeOnly as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst isTypeOnly = ((isShort ? modifiersOrIsTypeOnly : isTypeOnlyOrName) as boolean | undefined) ?? false;\n\t\t\t\t\t\t\tconst name = (isShort ? isTypeOnlyOrName : nameOrModuleReference) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst moduleReference = (isShort ? nameOrModuleReference : moduleReferenceOrUndefined) as TS.ModuleReference;\n\n\t\t\t\t\t\t\tif (badCreateImportEqualsDeclaration) {\n\t\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-1-2\").NodeFactory).createImportEqualsDeclaration(\n\t\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\t\tmoduleReference as never\n\t\t\t\t\t\t\t\t) as unknown as TS.ImportEqualsDeclaration;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createImportEqualsDeclaration(\n\t\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\t\tisTypeOnly as never,\n\t\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\t\tmoduleReference as never\n\t\t\t\t\t\t\t\t) as unknown as TS.ImportEqualsDeclaration;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateImportEqualsDeclaration(\n\t\t\t\t\t\t\tnode: TS.ImportEqualsDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tisTypeOnly: boolean,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\tmoduleReference: TS.ModuleReference\n\t\t\t\t\t\t): TS.ImportEqualsDeclaration;\n\t\t\t\t\t\tfunction updateImportEqualsDeclaration(\n\t\t\t\t\t\t\tnode: TS.ImportEqualsDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tisTypeOnly: boolean,\n\t\t\t\t\t\t\tname: string | TS.Identifier,\n\t\t\t\t\t\t\tmoduleReference: TS.ModuleReference\n\t\t\t\t\t\t): TS.ImportEqualsDeclaration;\n\t\t\t\t\t\tfunction updateImportEqualsDeclaration(\n\t\t\t\t\t\t\tnode: TS.ImportEqualsDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrIsTypeOnly: readonly TS.Modifier[] | boolean | undefined,\n\t\t\t\t\t\t\tisTypeOnlyOrName: boolean | string | TS.Identifier,\n\t\t\t\t\t\t\tnameOrModuleReference: string | TS.Identifier | TS.ModuleReference,\n\t\t\t\t\t\t\tmoduleReferenceOrUndefined?: TS.ModuleReference\n\t\t\t\t\t\t): TS.ImportEqualsDeclaration {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 5;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrIsTypeOnly as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst isTypeOnly = (isShort ? modifiersOrIsTypeOnly : isTypeOnlyOrName) as boolean;\n\t\t\t\t\t\t\tconst name = (isShort ? isTypeOnlyOrName : nameOrModuleReference) as string | TS.Identifier;\n\t\t\t\t\t\t\tconst moduleReference = (isShort ? nameOrModuleReference : moduleReferenceOrUndefined) as TS.ModuleReference;\n\n\t\t\t\t\t\t\tif (badCreateImportEqualsDeclaration) {\n\t\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-1-2\").NodeFactory).updateImportEqualsDeclaration(\n\t\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\t\tmoduleReference as never\n\t\t\t\t\t\t\t\t) as unknown as TS.ImportEqualsDeclaration;\n\t\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateImportEqualsDeclaration(\n\t\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\t\tisTypeOnly as never,\n\t\t\t\t\t\t\t\t\tname as never,\n\t\t\t\t\t\t\t\t\tmoduleReference as never\n\t\t\t\t\t\t\t\t) as unknown as TS.ImportEqualsDeclaration;\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createImportDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\timportClause: TS.ImportClause | undefined,\n\t\t\t\t\t\t\tmoduleSpecifier: TS.Expression,\n\t\t\t\t\t\t\tattributes?: TS.ImportAttributes\n\t\t\t\t\t\t): TS.ImportDeclaration;\n\t\t\t\t\t\tfunction createImportDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\timportClause: TS.ImportClause | undefined,\n\t\t\t\t\t\t\tmoduleSpecifier: TS.Expression,\n\t\t\t\t\t\t\tattributes?: TS.ImportAttributes\n\t\t\t\t\t\t): TS.ImportDeclaration;\n\t\t\t\t\t\tfunction createImportDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrImportClause: readonly TS.Modifier[] | TS.ImportClause | undefined,\n\t\t\t\t\t\t\timportClauseOrModuleSpecifier: TS.ImportClause | TS.Expression | undefined,\n\t\t\t\t\t\t\tmoduleSpecifierOrAttributes: TS.Expression | TS.ImportAttributes | undefined,\n\t\t\t\t\t\t\t_?: TS.ImportAttributes\n\t\t\t\t\t\t): TS.ImportDeclaration {\n\t\t\t\t\t\t\tconst isShort = importClauseOrModuleSpecifier != null && !(\"namedBindings\" in importClauseOrModuleSpecifier) && !(\"isTypeOnly\" in importClauseOrModuleSpecifier);\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrImportClause as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst importClause = (isShort ? modifiersOrImportClause : importClauseOrModuleSpecifier) as TS.ImportClause | undefined;\n\t\t\t\t\t\t\tconst moduleSpecifier = (isShort ? importClauseOrModuleSpecifier : moduleSpecifierOrAttributes) as TS.Expression;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createImportDeclaration(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\timportClause as never,\n\t\t\t\t\t\t\t\tmoduleSpecifier as never\n\t\t\t\t\t\t\t) as unknown as TS.ImportDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateImportDeclaration(\n\t\t\t\t\t\t\tnode: TS.ImportDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\timportClause: TS.ImportClause | undefined,\n\t\t\t\t\t\t\tmoduleSpecifier: TS.Expression,\n\t\t\t\t\t\t\tattributes?: TS.ImportAttributes\n\t\t\t\t\t\t): TS.ImportDeclaration;\n\t\t\t\t\t\tfunction updateImportDeclaration(\n\t\t\t\t\t\t\tnode: TS.ImportDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\timportClause: TS.ImportClause | undefined,\n\t\t\t\t\t\t\tmoduleSpecifier: TS.Expression,\n\t\t\t\t\t\t\tattributes?: TS.ImportAttributes\n\t\t\t\t\t\t): TS.ImportDeclaration;\n\t\t\t\t\t\tfunction updateImportDeclaration(\n\t\t\t\t\t\t\tnode: TS.ImportDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrImportClause: readonly TS.Modifier[] | TS.ImportClause | undefined,\n\t\t\t\t\t\t\timportClauseOrModuleSpecifier: TS.ImportClause | TS.Expression | undefined,\n\t\t\t\t\t\t\tmoduleSpecifierOrAttributes: TS.Expression | TS.ImportAttributes | undefined,\n\t\t\t\t\t\t\t_?: TS.ImportAttributes\n\t\t\t\t\t\t): TS.ImportDeclaration {\n\t\t\t\t\t\t\tconst isShort = importClauseOrModuleSpecifier != null && !(\"namedBindings\" in importClauseOrModuleSpecifier) && !(\"isTypeOnly\" in importClauseOrModuleSpecifier);\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrImportClause as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst importClause = (isShort ? modifiersOrImportClause : importClauseOrModuleSpecifier) as TS.ImportClause | undefined;\n\t\t\t\t\t\t\tconst moduleSpecifier = (isShort ? importClauseOrModuleSpecifier : moduleSpecifierOrAttributes) as TS.Expression;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateImportDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\timportClause as never,\n\t\t\t\t\t\t\t\tmoduleSpecifier as never,\n\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t) as unknown as TS.ImportDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createExportAssignment(modifiers: readonly TS.Modifier[] | undefined, isExportEquals: boolean | undefined, expression: TS.Expression): TS.ExportAssignment;\n\t\t\t\t\t\tfunction createExportAssignment(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[],\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tisExportEquals: boolean | undefined,\n\t\t\t\t\t\t\texpression: TS.Expression\n\t\t\t\t\t\t): TS.ExportAssignment;\n\t\t\t\t\t\tfunction createExportAssignment(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrIsExportEquals: readonly TS.Modifier[] | boolean | undefined,\n\t\t\t\t\t\t\tisExportEqualsOrExpression: boolean | TS.Expression | undefined,\n\t\t\t\t\t\t\texpressionOrUndefined?: TS.Expression\n\t\t\t\t\t\t): TS.ExportAssignment {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 3;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort\n\t\t\t\t\t\t\t\t? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1]\n\t\t\t\t\t\t\t\t: (modifiersOrIsExportEquals as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst isExportEquals = (isShort ? modifiersOrIsExportEquals : isExportEqualsOrExpression) as boolean;\n\t\t\t\t\t\t\tconst expression = (isShort ? isExportEqualsOrExpression : expressionOrUndefined) as TS.Expression;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createExportAssignment(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tisExportEquals as never,\n\t\t\t\t\t\t\t\texpression as never\n\t\t\t\t\t\t\t) as unknown as TS.ExportAssignment;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateExportAssignment(node: TS.ExportAssignment, modifiers: readonly TS.Modifier[] | undefined, expression: TS.Expression): TS.ExportAssignment;\n\t\t\t\t\t\tfunction updateExportAssignment(\n\t\t\t\t\t\t\tnode: TS.ExportAssignment,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[],\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\texpression: TS.Expression\n\t\t\t\t\t\t): TS.ExportAssignment;\n\t\t\t\t\t\tfunction updateExportAssignment(\n\t\t\t\t\t\t\tnode: TS.ExportAssignment,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrExpression: readonly TS.Modifier[] | TS.Expression | undefined,\n\t\t\t\t\t\t\texpressionOrUndefined?: TS.Expression\n\t\t\t\t\t\t): TS.ExportAssignment {\n\t\t\t\t\t\t\tconst isShort = arguments.length <= 3;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrExpression as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst expression = (isShort ? modifiersOrExpression : expressionOrUndefined) as TS.Expression;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateExportAssignment(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\texpression as never\n\t\t\t\t\t\t\t) as unknown as TS.ExportAssignment;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction createExportDeclaration(\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tisTypeOnly: boolean,\n\t\t\t\t\t\t\texportClause: TS.NamedExportBindings | undefined,\n\t\t\t\t\t\t\tmoduleSpecifier?: TS.Expression,\n\t\t\t\t\t\t\tattributes?: TS.ImportAttributes\n\t\t\t\t\t\t): TS.ExportDeclaration;\n\t\t\t\t\t\tfunction createExportDeclaration(\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tisTypeOnly: boolean,\n\t\t\t\t\t\t\texportClause: TS.NamedExportBindings | undefined,\n\t\t\t\t\t\t\tmoduleSpecifier?: TS.Expression,\n\t\t\t\t\t\t\tattributes?: TS.ImportAttributes\n\t\t\t\t\t\t): TS.ExportDeclaration;\n\t\t\t\t\t\tfunction createExportDeclaration(\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrIsTypeOnly: readonly TS.Modifier[] | boolean | undefined,\n\t\t\t\t\t\t\tisTypeOnlyOrExportClause: boolean | TS.NamedExportBindings | undefined,\n\t\t\t\t\t\t\texportClauseOrModuleSpecifier: TS.NamedExportBindings | TS.Expression | undefined,\n\t\t\t\t\t\t\tmoduleSpecifierOrImportAttributes: TS.Expression | TS.ImportAttributes | undefined,\n\t\t\t\t\t\t\t_?: TS.ImportAttributes\n\t\t\t\t\t\t): TS.ExportDeclaration {\n\t\t\t\t\t\t\tconst isLong = typeof modifiersOrIsTypeOnly !== \"boolean\" && (arguments.length >= 6 || Array.isArray(modifiersOrIsTypeOnly));\n\t\t\t\t\t\t\tconst isShort = !isLong;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrIsTypeOnly as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst isTypeOnly = (isShort ? modifiersOrIsTypeOnly : isTypeOnlyOrExportClause) as boolean;\n\t\t\t\t\t\t\tconst exportClause = (isShort ? isTypeOnlyOrExportClause : exportClauseOrModuleSpecifier) as TS.NamedExportBindings | undefined;\n\t\t\t\t\t\t\tconst moduleSpecifier = (isShort ? exportClauseOrModuleSpecifier : moduleSpecifierOrImportAttributes) as TS.Expression | undefined;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).createExportDeclaration(\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tisTypeOnly as never,\n\t\t\t\t\t\t\t\texportClause as never,\n\t\t\t\t\t\t\t\tmoduleSpecifier as never\n\t\t\t\t\t\t\t) as unknown as TS.ExportDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tfunction updateExportDeclaration(\n\t\t\t\t\t\t\tnode: TS.ExportDeclaration,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tisTypeOnly: boolean,\n\t\t\t\t\t\t\texportClause: TS.NamedExportBindings | undefined,\n\t\t\t\t\t\t\tmoduleSpecifier?: TS.Expression,\n\t\t\t\t\t\t\tattributes?: TS.ImportAttributes\n\t\t\t\t\t\t): TS.ExportDeclaration;\n\t\t\t\t\t\tfunction updateExportDeclaration(\n\t\t\t\t\t\t\tnode: TS.ExportDeclaration,\n\t\t\t\t\t\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\t\t\t\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tisTypeOnly: boolean,\n\t\t\t\t\t\t\texportClause: TS.NamedExportBindings | undefined,\n\t\t\t\t\t\t\tmoduleSpecifier?: TS.Expression,\n\t\t\t\t\t\t\tattributes?: TS.ImportAttributes\n\t\t\t\t\t\t): TS.ExportDeclaration;\n\t\t\t\t\t\tfunction updateExportDeclaration(\n\t\t\t\t\t\t\tnode: TS.ExportDeclaration,\n\t\t\t\t\t\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\t\t\t\t\t\tmodifiersOrIsTypeOnly: readonly TS.Modifier[] | boolean | undefined,\n\t\t\t\t\t\t\tisTypeOnlyOrExportClause: boolean | TS.NamedExportBindings | undefined,\n\t\t\t\t\t\t\texportClauseOrModuleSpecifier: TS.NamedExportBindings | TS.Expression | undefined,\n\t\t\t\t\t\t\tmoduleSpecifierOrAttributes: TS.Expression | TS.ImportAttributes | undefined,\n\t\t\t\t\t\t\t_?: TS.ImportAttributes\n\t\t\t\t\t\t): TS.ExportDeclaration {\n\t\t\t\t\t\t\tconst isLong = typeof modifiersOrIsTypeOnly !== \"boolean\" && (arguments.length >= 7 || Array.isArray(modifiersOrIsTypeOnly));\n\t\t\t\t\t\t\tconst isShort = !isLong;\n\t\t\t\t\t\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\t\t\t\t\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrIsTypeOnly as readonly TS.Modifier[]);\n\t\t\t\t\t\t\tconst isTypeOnly = (isShort ? modifiersOrIsTypeOnly : isTypeOnlyOrExportClause) as boolean;\n\t\t\t\t\t\t\tconst exportClause = (isShort ? isTypeOnlyOrExportClause : exportClauseOrModuleSpecifier) as TS.NamedExportBindings | undefined;\n\t\t\t\t\t\t\tconst moduleSpecifier = (isShort ? exportClauseOrModuleSpecifier : moduleSpecifierOrAttributes) as TS.Expression | undefined;\n\n\t\t\t\t\t\t\treturn (factory as unknown as import(\"typescript-4-7-2\").NodeFactory).updateExportDeclaration(\n\t\t\t\t\t\t\t\tnode as never,\n\t\t\t\t\t\t\t\tdecorators as never,\n\t\t\t\t\t\t\t\tmodifiers as never,\n\t\t\t\t\t\t\t\tisTypeOnly as never,\n\t\t\t\t\t\t\t\texportClause as never,\n\t\t\t\t\t\t\t\tmoduleSpecifier as never,\n\t\t\t\t\t\t\t\tundefined\n\t\t\t\t\t\t\t) as unknown as TS.ExportDeclaration;\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tcreateParameterDeclaration,\n\t\t\t\t\t\t\tupdateParameterDeclaration,\n\t\t\t\t\t\t\tcreatePropertyDeclaration,\n\t\t\t\t\t\t\tupdatePropertyDeclaration,\n\t\t\t\t\t\t\tcreateMethodDeclaration,\n\t\t\t\t\t\t\tupdateMethodDeclaration,\n\t\t\t\t\t\t\tcreateConstructorDeclaration,\n\t\t\t\t\t\t\tupdateConstructorDeclaration,\n\t\t\t\t\t\t\tcreateGetAccessorDeclaration,\n\t\t\t\t\t\t\tupdateGetAccessorDeclaration,\n\t\t\t\t\t\t\tcreateSetAccessorDeclaration,\n\t\t\t\t\t\t\tupdateSetAccessorDeclaration,\n\t\t\t\t\t\t\tcreateIndexSignature,\n\t\t\t\t\t\t\tupdateIndexSignature,\n\t\t\t\t\t\t\tcreateClassStaticBlockDeclaration,\n\t\t\t\t\t\t\tupdateClassStaticBlockDeclaration,\n\t\t\t\t\t\t\tcreateClassExpression,\n\t\t\t\t\t\t\tupdateClassExpression,\n\t\t\t\t\t\t\tcreateFunctionDeclaration,\n\t\t\t\t\t\t\tupdateFunctionDeclaration,\n\t\t\t\t\t\t\tcreateClassDeclaration,\n\t\t\t\t\t\t\tupdateClassDeclaration,\n\t\t\t\t\t\t\tcreateInterfaceDeclaration,\n\t\t\t\t\t\t\tupdateInterfaceDeclaration,\n\t\t\t\t\t\t\tcreateTypeAliasDeclaration,\n\t\t\t\t\t\t\tupdateTypeAliasDeclaration,\n\t\t\t\t\t\t\tcreateEnumDeclaration,\n\t\t\t\t\t\t\tupdateEnumDeclaration,\n\t\t\t\t\t\t\tcreateModuleDeclaration,\n\t\t\t\t\t\t\tupdateModuleDeclaration,\n\t\t\t\t\t\t\tcreateImportEqualsDeclaration,\n\t\t\t\t\t\t\tupdateImportEqualsDeclaration,\n\t\t\t\t\t\t\tcreateImportDeclaration,\n\t\t\t\t\t\t\tupdateImportDeclaration,\n\t\t\t\t\t\t\tcreateExportAssignment,\n\t\t\t\t\t\t\tupdateExportAssignment,\n\t\t\t\t\t\t\tcreateExportDeclaration,\n\t\t\t\t\t\t\tupdateExportDeclaration\n\t\t\t\t\t\t};\n\t\t\t\t\t})()\n\t\t\t\t: {})\n\t\t};\n\t}\n\treturn factory;\n}\n\nfunction createNodeFactory(typescript: typeof TS): TS.NodeFactory {\n\tconst typescript4Cast = typescript as unknown as typeof import(\"typescript-4-9-4\");\n\n\tfunction createToken(token: TS.SyntaxKind.SuperKeyword): TS.SuperExpression;\n\tfunction createToken(token: TS.SyntaxKind.ThisKeyword): TS.ThisExpression;\n\tfunction createToken(token: TS.SyntaxKind.NullKeyword): TS.NullLiteral;\n\tfunction createToken(token: TS.SyntaxKind.TrueKeyword): TS.TrueLiteral;\n\tfunction createToken(token: TS.SyntaxKind.FalseKeyword): TS.FalseLiteral;\n\tfunction createToken<TKind extends TS.PunctuationSyntaxKind>(token: TKind): TS.PunctuationToken<TKind>;\n\tfunction createToken<TKind extends TS.KeywordTypeSyntaxKind>(token: TKind): TS.KeywordTypeNode<TKind>;\n\tfunction createToken<TKind extends TS.ModifierSyntaxKind>(token: TKind): TS.ModifierToken<TKind>;\n\tfunction createToken<TKind extends TS.KeywordSyntaxKind>(token: TKind): TS.KeywordToken<TKind>;\n\tfunction createToken<TKind extends TS.SyntaxKind.Unknown | TS.SyntaxKind.EndOfFileToken>(token: TKind): TS.Token<TKind> {\n\t\treturn typescript4Cast.createToken(token as unknown as TS4.SyntaxKind.Unknown) as unknown as TS.Token<TKind>;\n\t}\n\n\tfunction createConstructorTypeNode(\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode\n\t): TS.ConstructorTypeNode;\n\tfunction createConstructorTypeNode(\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode\n\t): TS.ConstructorTypeNode;\n\tfunction createConstructorTypeNode(\n\t\tmodifiersOrTypeParameters: readonly TS.Modifier[] | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttypeParametersOrParameters: readonly TS.TypeParameterDeclaration[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\tparametersOrType: readonly TS.ParameterDeclaration[] | TS.TypeNode,\n\t\ttypeOrUndefined?: TS.TypeNode\n\t): TS.ConstructorTypeNode {\n\t\tif (arguments.length >= 4) {\n\t\t\treturn typescript4Cast.createConstructorTypeNode(typeParametersOrParameters as never, parametersOrType as never, typeOrUndefined as never) as never;\n\t\t}\n\n\t\treturn typescript4Cast.createConstructorTypeNode(modifiersOrTypeParameters as never, typeParametersOrParameters as never, parametersOrType as never) as never;\n\t}\n\n\tfunction updateConstructorTypeNode(\n\t\tnode: TS.ConstructorTypeNode,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\ttypeParameters: TS.NodeArray<TS.TypeParameterDeclaration> | undefined,\n\t\tparameters: TS.NodeArray<TS.ParameterDeclaration>,\n\t\ttype: TS.TypeNode\n\t): TS.ConstructorTypeNode;\n\tfunction updateConstructorTypeNode(\n\t\tnode: TS.ConstructorTypeNode,\n\t\ttypeParameters: TS.NodeArray<TS.TypeParameterDeclaration> | undefined,\n\t\tparameters: TS.NodeArray<TS.ParameterDeclaration>,\n\t\ttype: TS.TypeNode\n\t): TS.ConstructorTypeNode;\n\tfunction updateConstructorTypeNode(\n\t\tnode: TS.ConstructorTypeNode,\n\t\tmodifiersOrTypeParameters: readonly TS.Modifier[] | TS.NodeArray<TS.TypeParameterDeclaration> | undefined,\n\t\ttypeParametersOrParameters: TS.NodeArray<TS.TypeParameterDeclaration> | TS.NodeArray<TS.ParameterDeclaration> | undefined,\n\t\tparametersOrType: TS.NodeArray<TS.ParameterDeclaration> | TS.TypeNode,\n\t\ttypeOrUndefined?: TS.TypeNode\n\t): TS.ConstructorTypeNode {\n\t\tif (arguments.length >= 5) {\n\t\t\treturn typescript4Cast.updateConstructorTypeNode(node as never, typeParametersOrParameters as never, parametersOrType as never, typeOrUndefined as never) as never;\n\t\t}\n\n\t\treturn typescript4Cast.updateConstructorTypeNode(node as never, modifiersOrTypeParameters as never, typeParametersOrParameters as never, parametersOrType as never) as never;\n\t}\n\n\tfunction createNamedTupleMember(\n\t\tdotDotDotToken: TS.DotDotDotToken | undefined,\n\t\tname: TS.Identifier,\n\t\tquestionToken: TS.QuestionToken | undefined,\n\t\ttype: TS.TypeNode\n\t): TS.NamedTupleMember {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.NamedTupleMember ?? typescript.SyntaxKind.TupleType) as never) as unknown as Mutable<TS.NamedTupleMember>;\n\t\tnode.dotDotDotToken = dotDotDotToken;\n\t\tnode.name = name;\n\t\tnode.questionToken = questionToken;\n\t\tnode.type = type;\n\t\t(node as NodeWithInternalFlags).transformFlags = 1 /* ContainsTypeScript */;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocComment(comment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>, tags?: readonly TS.JSDocTag[]): TS.JSDoc {\n\t\tif (\"createJSDocComment\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocComment(comment as never, tags as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode(typescript.SyntaxKind.JSDocComment as never) as unknown as Mutable<TS.JSDoc>;\n\t\tnode.comment = comment;\n\t\tnode.tags = typescript4Cast.createNodeArray(tags as never) as never;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocParameterTag(\n\t\ttagName: TS.Identifier | undefined,\n\t\tname: TS.EntityName,\n\t\tisBracketed: boolean,\n\t\ttypeExpression?: TS.JSDocTypeExpression,\n\t\tisNameFirst?: boolean,\n\t\tcomment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>\n\t): TS.JSDocParameterTag {\n\t\tif (\"createJSDocParameterTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocParameterTag(tagName as never, name as never, isBracketed, typeExpression as never, isNameFirst, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocParameterTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocParameterTag>;\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.name = name;\n\t\tnode.isBracketed = isBracketed;\n\t\tnode.typeExpression = typeExpression;\n\t\tif (isNameFirst != null) node.isNameFirst = isNameFirst;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocPrivateTag(tagName: TS.Identifier | undefined, comment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>): TS.JSDocPrivateTag {\n\t\tif (\"createJSDocPrivateTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocPrivateTag(tagName as never, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocPrivateTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocPrivateTag>;\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocAugmentsTag(\n\t\ttagName: TS.Identifier | undefined,\n\t\tclassName: TS.JSDocAugmentsTag[\"class\"],\n\t\tcomment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>\n\t): TS.JSDocAugmentsTag {\n\t\tif (\"createJSDocAugmentsTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocAugmentsTag(tagName as never, className as never, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocAugmentsTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocAugmentsTag>;\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.class = className;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocDeprecatedTag(tagName: TS.Identifier, comment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>): TS.JSDocDeprecatedTag {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocDeprecatedTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocDeprecatedTag>;\n\t\tnode.tagName = tagName;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocFunctionType(parameters: readonly TS.ParameterDeclaration[], type: TS.TypeNode | undefined): TS.JSDocFunctionType {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocFunctionType ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocFunctionType>;\n\t\tnode.parameters = typescript4Cast.createNodeArray(parameters as never) as never;\n\t\tnode.type = type;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocLink(name: TS.EntityName | undefined, text: string): TS.JSDocLink {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocLink ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocLink>;\n\t\tnode.name = name;\n\t\tnode.text = text;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocNameReference(name: TS.EntityName): TS.JSDocNameReference {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocNameReference ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocNameReference>;\n\t\tnode.name = name;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocNamepathType(type: TS.TypeNode): TS.JSDocNamepathType {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocNamepathType ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocNamepathType>;\n\t\tnode.type = type;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocNonNullableType(type: TS.TypeNode): TS.JSDocNonNullableType {\n\t\tconst node = typescript4Cast.createNode(\n\t\t\t(typescript.SyntaxKind.JSDocNonNullableType ?? typescript.SyntaxKind.JSDocComment) as never\n\t\t) as unknown as Mutable<TS.JSDocNonNullableType>;\n\t\tnode.type = type;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocNullableType(type: TS.TypeNode): TS.JSDocNullableType {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocNullableType ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocNullableType>;\n\t\tnode.type = type;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocOptionalType(type: TS.TypeNode): TS.JSDocOptionalType {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocOptionalType ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocOptionalType>;\n\t\tnode.type = type;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocOverrideTag(tagName: TS.Identifier, comment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>): TS.JSDocOverrideTag {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocOverrideTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocOverrideTag>;\n\t\tnode.tagName = tagName;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocSeeTag(\n\t\ttagName: TS.Identifier | undefined,\n\t\tnameExpression: TS.JSDocNameReference | undefined,\n\t\tcomment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>\n\t): TS.JSDocSeeTag {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocSeeTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocSeeTag>;\n\t\tif (tagName != null) {\n\t\t\tnode.tagName = tagName;\n\t\t}\n\t\tnode.name = nameExpression;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocText(text: string): TS.JSDocText {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocText ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocText>;\n\t\tnode.text = text;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocUnknownTag(tagName: TS.Identifier, comment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>): TS.JSDocUnknownTag {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocUnknownTag>;\n\t\tnode.tagName = tagName;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocUnknownType(): TS.JSDocUnknownType {\n\t\treturn typescript4Cast.createNode((typescript.SyntaxKind.JSDocUnknownType ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocUnknownType>;\n\t}\n\n\tfunction createJSDocVariadicType(type: TS.TypeNode): TS.JSDocVariadicType {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocVariadicType ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocVariadicType>;\n\t\tnode.type = type;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocAllType(): TS.JSDocAllType {\n\t\treturn typescript4Cast.createNode((typescript.SyntaxKind.JSDocAllType ?? typescript.SyntaxKind.JSDocComment) as never) as never;\n\t}\n\n\tfunction createTemplateLiteralType(head: TS.TemplateHead, templateSpans: readonly TS.TemplateLiteralTypeSpan[]): TS.TemplateLiteralTypeNode {\n\t\tconst node = typescript4Cast.createNode(\n\t\t\t(typescript.SyntaxKind.TemplateLiteralType ?? typescript.SyntaxKind.StringLiteral) as never\n\t\t) as unknown as Mutable<TS.TemplateLiteralTypeNode>;\n\t\tnode.head = head;\n\t\tnode.templateSpans = typescript4Cast.createNodeArray(templateSpans as never) as never;\n\t\t(node as NodeWithInternalFlags).transformFlags = 1 /* ContainsTypeScript */;\n\t\treturn node;\n\t}\n\n\tfunction createTemplateLiteralTypeSpan(type: TS.TypeNode, literal: TS.TemplateMiddle | TS.TemplateTail): TS.TemplateLiteralTypeSpan {\n\t\tconst node = typescript4Cast.createNode(\n\t\t\t(typescript.SyntaxKind.TemplateLiteralTypeSpan ?? typescript.SyntaxKind.StringLiteral) as never\n\t\t) as unknown as Mutable<TS.TemplateLiteralTypeSpan>;\n\t\tnode.type = type;\n\t\tnode.literal = literal;\n\t\t(node as NodeWithInternalFlags).transformFlags = 1 /* ContainsTypeScript */;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocAuthorTag(tagName: TS.Identifier | undefined, comment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>): TS.JSDocAuthorTag {\n\t\tif (\"createJSDocAuthorTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocAuthorTag(tagName as never, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocAuthorTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocAuthorTag>;\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocCallbackTag(\n\t\ttagName: TS.Identifier | undefined,\n\t\ttypeExpression: TS.JSDocSignature,\n\t\tfullName?: TS.Identifier | TS.JSDocNamespaceDeclaration,\n\t\tcomment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>\n\t): TS.JSDocCallbackTag {\n\t\tif (\"createJSDocCallbackTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocCallbackTag(tagName as never, typeExpression as never, fullName as never, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocCallbackTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocCallbackTag>;\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.typeExpression = typeExpression;\n\t\tnode.fullName = fullName;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocClassTag(tagName: TS.Identifier | undefined, comment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>): TS.JSDocClassTag {\n\t\tif (\"createJSDocClassTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocClassTag(tagName as never, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocClassTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocClassTag>;\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocEnumTag(\n\t\ttagName: TS.Identifier | undefined,\n\t\ttypeExpression: TS.JSDocTypeExpression,\n\t\tcomment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>\n\t): TS.JSDocEnumTag {\n\t\tif (\"createJSDocEnumTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocEnumTag(tagName as never, typeExpression as never, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocEnumTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocEnumTag>;\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.typeExpression = typeExpression;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocImplementsTag(\n\t\ttagName: TS.Identifier | undefined,\n\t\tclassName: TS.JSDocImplementsTag[\"class\"],\n\t\tcomment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>\n\t): TS.JSDocImplementsTag {\n\t\tif (\"createJSDocImplementsTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocImplementsTag(tagName as never, className as never, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocImplementsTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocImplementsTag>;\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.class = className;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocPropertyTag(\n\t\ttagName: TS.Identifier | undefined,\n\t\tname: TS.EntityName,\n\t\tisBracketed: boolean,\n\t\ttypeExpression?: TS.JSDocTypeExpression,\n\t\tisNameFirst?: boolean,\n\t\tcomment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>\n\t): TS.JSDocPropertyTag {\n\t\tif (\"createJSDocPropertyTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocPropertyTag(tagName as never, name as never, isBracketed, typeExpression as never, isNameFirst, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocPropertyTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocPropertyTag>;\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.name = name;\n\t\tnode.isBracketed = isBracketed;\n\t\tnode.typeExpression = typeExpression;\n\t\tif (isNameFirst != null) node.isNameFirst = isNameFirst;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocProtectedTag(tagName: TS.Identifier | undefined, comment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>): TS.JSDocProtectedTag {\n\t\tif (\"createJSDocProtectedTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocProtectedTag(tagName as never, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocProtectedTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocProtectedTag>;\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocPublicTag(tagName: TS.Identifier | undefined, comment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>): TS.JSDocPublicTag {\n\t\tif (\"createJSDocPublicTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocPublicTag(tagName as never, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocPublicTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocPublicTag>;\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocReadonlyTag(tagName: TS.Identifier | undefined, comment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>): TS.JSDocReadonlyTag {\n\t\tif (\"createJSDocReadonlyTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocReadonlyTag(tagName as never, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocReadonlyTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocReadonlyTag>;\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocReturnTag(\n\t\ttagName: TS.Identifier | undefined,\n\t\ttypeExpression?: TS.JSDocTypeExpression,\n\t\tcomment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>\n\t): TS.JSDocReturnTag {\n\t\tif (\"createJSDocReturnTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocReturnTag(tagName as never, typeExpression as never, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocReturnTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocReturnTag>;\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.typeExpression = typeExpression;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocSignature(\n\t\ttypeParameters: readonly TS.JSDocTemplateTag[] | undefined,\n\t\tparameters: readonly TS.JSDocParameterTag[],\n\t\ttype?: TS.JSDocReturnTag\n\t): TS.JSDocSignature {\n\t\tif (\"createJSDocSignature\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocSignature(typeParameters as never, parameters as never, type as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocSignature ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocSignature>;\n\n\t\tnode.typeParameters = typeParameters;\n\t\tnode.parameters = parameters;\n\t\tnode.type = type;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocTemplateTag(\n\t\ttagName: TS.Identifier | undefined,\n\t\tconstraint: TS.JSDocTypeExpression | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[],\n\t\tcomment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>\n\t): TS.JSDocTemplateTag {\n\t\tif (\"createJSDocTemplateTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocTemplateTag(tagName as never, constraint as never, typeParameters as never, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocTemplateTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocTemplateTag>;\n\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.constraint = constraint;\n\t\tnode.typeParameters = typescript4Cast.createNodeArray(typeParameters as never) as never;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocThisTag(\n\t\ttagName: TS.Identifier | undefined,\n\t\ttypeExpression: TS.JSDocTypeExpression,\n\t\tcomment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>\n\t): TS.JSDocThisTag {\n\t\tif (\"createJSDocThisTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocThisTag(tagName as never, typeExpression as never, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocThisTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocThisTag>;\n\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.typeExpression = typeExpression;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocTypeExpression(type: TS.TypeNode): TS.JSDocTypeExpression {\n\t\tif (\"createJSDocTypeExpression\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocTypeExpression(type as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode(\n\t\t\t(typescript.SyntaxKind.JSDocTypeExpression ?? typescript.SyntaxKind.JSDocComment) as never\n\t\t) as unknown as Mutable<TS.JSDocTypeExpression>;\n\n\t\tnode.type = type;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocTypeLiteral(jsDocPropertyTags?: readonly TS.JSDocPropertyLikeTag[], isArrayType?: boolean): TS.JSDocTypeLiteral {\n\t\tif (\"createJSDocTypeLiteral\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocTypeLiteral(jsDocPropertyTags as never, isArrayType) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocTypeLiteral ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocTypeLiteral>;\n\n\t\tnode.jsDocPropertyTags = jsDocPropertyTags;\n\t\tif (isArrayType != null) node.isArrayType = isArrayType;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocTypeTag(\n\t\ttagName: TS.Identifier | undefined,\n\t\ttypeExpression: TS.JSDocTypeExpression,\n\t\tcomment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>\n\t): TS.JSDocTypeTag {\n\t\tif (\"createJSDocTypeTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocTypeTag(tagName as never, typeExpression as never, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocTypeTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocTypeTag>;\n\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.typeExpression = typeExpression;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocTypedefTag(\n\t\ttagName: TS.Identifier | undefined,\n\t\ttypeExpression?: TS.JSDocTypeExpression | TS.JSDocTypeLiteral,\n\t\tfullName?: TS.Identifier | TS.JSDocNamespaceDeclaration,\n\t\tcomment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>\n\t): TS.JSDocTypedefTag {\n\t\tif (\"createJSDocTypedefTag\" in (typescript as typeof TS)) {\n\t\t\treturn typescript4Cast.createJSDocTypedefTag(tagName as never, typeExpression as never, fullName as never, comment as never) as never;\n\t\t}\n\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocTypedefTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocTypedefTag>;\n\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.typeExpression = typeExpression;\n\t\tnode.fullName = fullName;\n\t\tnode.comment = comment;\n\t\treturn node;\n\t}\n\n\tfunction createJSDocMemberName(left: TS.EntityName | TS.JSDocMemberName, right: TS.Identifier): TS.JSDocMemberName {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocMemberName ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocMemberName>;\n\n\t\tnode.left = left;\n\t\tnode.right = right;\n\n\t\treturn node;\n\t}\n\n\tfunction createJSDocLinkCode(name: TS.EntityName | TS.JSDocMemberName | undefined, text: string): TS.JSDocLinkCode {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocLinkCode ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocLinkCode>;\n\n\t\tnode.name = name;\n\t\tnode.text = text;\n\n\t\treturn node;\n\t}\n\n\tfunction createJSDocLinkPlain(name: TS.EntityName | TS.JSDocMemberName | undefined, text: string): TS.JSDocLinkPlain {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocLinkPlain ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocLinkPlain>;\n\n\t\tnode.name = name;\n\t\tnode.text = text;\n\n\t\treturn node;\n\t}\n\n\tfunction createJSDocOverloadTag(tagName: TS.Identifier | undefined, typeExpression: TS.JSDocSignature, comment?: string | TS.NodeArray<TS.JSDocComment>): TS.JSDocOverloadTag {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocOverloadTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocOverloadTag>;\n\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.typeExpression = typeExpression;\n\t\tnode.comment = comment;\n\n\t\treturn node;\n\t}\n\n\tfunction createJSDocThrowsTag(tagName: TS.Identifier, typeExpression: TS.JSDocTypeExpression | undefined, comment?: string | TS.NodeArray<TS.JSDocComment>): TS.JSDocThrowsTag {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocThrowsTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocThrowsTag>;\n\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.typeExpression = typeExpression;\n\t\tnode.comment = comment;\n\n\t\treturn node;\n\t}\n\n\tfunction createJSDocSatisfiesTag(\n\t\ttagName: TS.Identifier | undefined,\n\t\ttypeExpression: TS.JSDocTypeExpression,\n\t\tcomment?: string | TS.NodeArray<TS.JSDocComment>\n\t): TS.JSDocSatisfiesTag {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocSatisfiesTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocSatisfiesTag>;\n\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.typeExpression = typeExpression;\n\t\tnode.comment = comment;\n\n\t\treturn node;\n\t}\n\n\tfunction createJSDocImportTag(\n\t\ttagName: TS.Identifier | undefined,\n\t\timportClause: TS.ImportClause | undefined,\n\t\tmoduleSpecifier: TS.Expression,\n\t\tattributes?: TS.ImportAttributes,\n\t\tcomment?: string | TS.NodeArray<TS.JSDocComment>\n\t): TS.JSDocImportTag {\n\t\tconst node = typescript4Cast.createNode((typescript.SyntaxKind.JSDocImportTag ?? typescript.SyntaxKind.JSDocComment) as never) as unknown as Mutable<TS.JSDocImportTag>;\n\n\t\tif (tagName != null) node.tagName = tagName;\n\t\tnode.comment = comment;\n\t\tnode.importClause = importClause;\n\t\tnode.moduleSpecifier = moduleSpecifier;\n\t\tnode.attributes = attributes;\n\n\t\treturn node;\n\t}\n\n\tfunction createClassStaticBlockDeclaration(body: TS.Block): TS.ClassStaticBlockDeclaration;\n\tfunction createClassStaticBlockDeclaration(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tbody: TS.Block\n\t): TS.ClassStaticBlockDeclaration;\n\tfunction createClassStaticBlockDeclaration(\n\t\tdecoratorsOrBody: readonly TS.Decorator[] | TS.Block | undefined,\n\t\tmodifiersOrUndefined?: readonly TS.Modifier[],\n\t\tbodyOrUndefined?: TS.Block\n\t): TS.ClassStaticBlockDeclaration {\n\t\tconst isShort = arguments.length <= 1;\n\t\tconst body = (isShort ? decoratorsOrBody : bodyOrUndefined) as TS.Block;\n\n\t\tconst node = typescript4Cast.createEmptyStatement() as unknown as Mutable<TS.ClassStaticBlockDeclaration>;\n\t\tnode.body = body;\n\n\t\t(node as NodeWithInternalFlags).transformFlags = 8388608 /* ContainsClassFields */;\n\t\treturn node;\n\t}\n\n\tfunction updateClassStaticBlockDeclaration(node: TS.ClassStaticBlockDeclaration, body: TS.Block): TS.ClassStaticBlockDeclaration;\n\tfunction updateClassStaticBlockDeclaration(\n\t\tnode: TS.ClassStaticBlockDeclaration,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tbody: TS.Block\n\t): TS.ClassStaticBlockDeclaration;\n\tfunction updateClassStaticBlockDeclaration(\n\t\tnode: TS.ClassStaticBlockDeclaration,\n\t\tdecoratorsOrBody: readonly TS.Decorator[] | TS.Block | undefined,\n\t\tmodifiersOrUndefined?: readonly TS.Modifier[],\n\t\tbodyOrUndefined?: TS.Block\n\t): TS.ClassStaticBlockDeclaration {\n\t\tconst isShort = arguments.length <= 2;\n\t\tconst body = (isShort ? decoratorsOrBody : bodyOrUndefined) as TS.Block;\n\t\treturn body === node.body ? node : typescript.setTextRange(createClassStaticBlockDeclaration(body), node);\n\t}\n\n\tfunction createSatisfiesExpression(expression: TS.Expression, type: TS.TypeNode): TS.SatisfiesExpression {\n\t\treturn {...expression} as TS.SatisfiesExpression;\n\t}\n\n\tfunction updateSatisfiesExpression(node: TS.SatisfiesExpression, expression: TS.Expression, type: TS.TypeNode): TS.SatisfiesExpression {\n\t\treturn expression === node.expression && type === node.type ? node : typescript.setTextRange(createSatisfiesExpression(expression, type), node);\n\t}\n\n\tfunction createAssertClause(elements: TS.NodeArray<TS.AssertEntry>, multiLine?: boolean): TS.AssertClause {\n\t\tconst node = typescript4Cast.createEmptyStatement() as unknown as Mutable<TS.AssertClause>;\n\n\t\tnode.elements = elements;\n\t\tnode.multiLine = multiLine;\n\t\t(node as NodeWithInternalFlags).transformFlags! |= 4 /* ContainsESNext */;\n\t\treturn node;\n\t}\n\n\tfunction createAssertEntry(name: TS.AssertionKey, value: TS.StringLiteral): TS.AssertEntry {\n\t\tconst node = typescript4Cast.createEmptyStatement() as unknown as Mutable<TS.AssertEntry>;\n\n\t\tnode.name = name;\n\t\tnode.value = value;\n\t\t(node as NodeWithInternalFlags).transformFlags! |= 4 /* ContainsESNext */;\n\t\treturn node;\n\t}\n\n\tfunction createImportTypeAssertionContainer(clause: TS.AssertClause, multiLine?: boolean): TS.ImportTypeAssertionContainer {\n\t\tconst node = typescript4Cast.createEmptyStatement() as unknown as Mutable<TS.ImportTypeAssertionContainer>;\n\t\tnode.assertClause = clause;\n\t\tnode.multiLine = multiLine;\n\t\treturn node;\n\t}\n\n\tfunction createImportAttributes(elements: TS.NodeArray<TS.ImportAttribute>, multiLine?: boolean): TS.ImportAttributes {\n\t\tconst node = typescript4Cast.createEmptyStatement() as unknown as Mutable<TS.ImportAttributes>;\n\t\tnode.elements = elements;\n\t\tnode.multiLine = multiLine;\n\t\treturn node;\n\t}\n\n\tfunction createImportAttribute(name: TS.ImportAttributeName, value: TS.Expression): TS.ImportAttribute {\n\t\tconst node = typescript4Cast.createEmptyStatement() as unknown as Mutable<TS.ImportAttribute>;\n\t\tnode.name = name;\n\t\tnode.value = value;\n\t\treturn node;\n\t}\n\n\tfunction createJsxNamespacedName(namespace: TS.Identifier, name: TS.Identifier): TS.JsxNamespacedName {\n\t\tconst node = typescript4Cast.createEmptyStatement() as unknown as Mutable<TS.JsxNamespacedName>;\n\t\tnode.namespace = namespace;\n\t\tnode.name = name;\n\t\treturn node;\n\t}\n\n\tfunction createImportTypeNode(argument: TS.TypeNode, qualifier?: TS.EntityName, typeArguments?: readonly TS.TypeNode[], isTypeOf?: boolean): TS.ImportTypeNode;\n\tfunction createImportTypeNode(\n\t\targument: TS.TypeNode,\n\t\tattributes?: TS.ImportAttributes,\n\t\tqualifier?: TS.EntityName,\n\t\ttypeArguments?: readonly TS.TypeNode[],\n\t\tisTypeOf?: boolean\n\t): TS.ImportTypeNode;\n\tfunction createImportTypeNode(\n\t\targument: TS.TypeNode,\n\t\tattributesOrQualifier?: TS.ImportAttributes | TS.EntityName,\n\t\tqualifierOrTypeArguments?: TS.EntityName | readonly TS.TypeNode[],\n\t\ttypeArgumentsOrIsTypeOf?: readonly TS.TypeNode[] | boolean,\n\t\tisTypeOfOrUndefined?: boolean\n\t): TS.ImportTypeNode {\n\t\tif (\"createImportTypeNode\" in (typescript as typeof TS)) {\n\t\t\tif (arguments.length < 5) {\n\t\t\t\treturn typescript4Cast.createImportTypeNode(\n\t\t\t\t\targument as never,\n\t\t\t\t\tattributesOrQualifier as never,\n\t\t\t\t\tqualifierOrTypeArguments as never,\n\t\t\t\t\ttypeArgumentsOrIsTypeOf as never\n\t\t\t\t) as never;\n\t\t\t} else {\n\t\t\t\treturn typescript4Cast.createImportTypeNode(argument as never, qualifierOrTypeArguments as never, typeArgumentsOrIsTypeOf as never, isTypeOfOrUndefined as never) as never;\n\t\t\t}\n\t\t} else {\n\t\t\tconst attributes = attributesOrQualifier && \"elements\" in attributesOrQualifier ? attributesOrQualifier : undefined;\n\t\t\tconst qualifier = (\n\t\t\t\tattributesOrQualifier && typescript.isEntityName(attributesOrQualifier)\n\t\t\t\t\t? attributesOrQualifier\n\t\t\t\t\t: qualifierOrTypeArguments && !Array.isArray(qualifierOrTypeArguments)\n\t\t\t\t\t\t? qualifierOrTypeArguments\n\t\t\t\t\t\t: undefined\n\t\t\t) as TS.EntityName | undefined;\n\t\t\tconst typeArguments = (Array.isArray(qualifierOrTypeArguments) ? qualifierOrTypeArguments : Array.isArray(typeArgumentsOrIsTypeOf) ? typeArgumentsOrIsTypeOf : undefined) as\n\t\t\t\t| undefined\n\t\t\t\t| readonly TS.TypeNode[];\n\t\t\tisTypeOfOrUndefined = typeof typeArgumentsOrIsTypeOf === \"boolean\" ? typeArgumentsOrIsTypeOf : typeof isTypeOfOrUndefined === \"boolean\" ? isTypeOfOrUndefined : false;\n\t\t\tconst node = typescript4Cast.createNode(200) as unknown as Mutable<TS.ImportTypeNode>;\n\t\t\tnode.argument = argument;\n\t\t\tnode.attributes = attributes;\n\t\t\tnode.qualifier = qualifier;\n\t\t\tnode.typeArguments = typeArguments == null ? undefined : (typescript4Cast.createNodeArray(typeArguments as never) as never);\n\t\t\tnode.isTypeOf = isTypeOfOrUndefined;\n\t\t\t(node as NodeWithInternalFlags).transformFlags = 1 /* TransformFlags.ContainsTypeScript */;\n\t\t\treturn node;\n\t\t}\n\t}\n\n\tfunction updateImportTypeNode(\n\t\tnode: TS.ImportTypeNode,\n\t\targument: TS.TypeNode,\n\t\tqualifier?: TS.EntityName,\n\t\ttypeArguments?: readonly TS.TypeNode[],\n\t\tisTypeOf?: boolean\n\t): TS.ImportTypeNode;\n\tfunction updateImportTypeNode(\n\t\tnode: TS.ImportTypeNode,\n\t\targument: TS.TypeNode,\n\t\tattributes?: TS.ImportAttributes,\n\t\tqualifier?: TS.EntityName,\n\t\ttypeArguments?: readonly TS.TypeNode[],\n\t\tisTypeOf?: boolean\n\t): TS.ImportTypeNode;\n\tfunction updateImportTypeNode(\n\t\tnode: TS.ImportTypeNode,\n\t\targument: TS.TypeNode,\n\t\tattributesOrQualifier?: TS.ImportAttributes | TS.EntityName,\n\t\tqualifierOrTypeArguments?: TS.EntityName | readonly TS.TypeNode[],\n\t\ttypeArgumentsOrIsTypeOf?: readonly TS.TypeNode[] | boolean,\n\t\tisTypeOfOrUndefined?: boolean\n\t): TS.ImportTypeNode {\n\t\tif (\"updateImportTypeNode\" in (typescript as typeof TS)) {\n\t\t\tif (arguments.length < 6) {\n\t\t\t\treturn typescript4Cast.updateImportTypeNode(\n\t\t\t\t\tnode as never,\n\t\t\t\t\targument as never,\n\t\t\t\t\tattributesOrQualifier as never,\n\t\t\t\t\tqualifierOrTypeArguments as never,\n\t\t\t\t\ttypeArgumentsOrIsTypeOf as never\n\t\t\t\t) as never;\n\t\t\t} else {\n\t\t\t\treturn typescript4Cast.updateImportTypeNode(\n\t\t\t\t\tnode as never,\n\t\t\t\t\targument as never,\n\t\t\t\t\tqualifierOrTypeArguments as never,\n\t\t\t\t\ttypeArgumentsOrIsTypeOf as never,\n\t\t\t\t\tisTypeOfOrUndefined as never\n\t\t\t\t) as never;\n\t\t\t}\n\t\t} else {\n\t\t\tconst attributes = attributesOrQualifier && \"elements\" in attributesOrQualifier /* SyntaxKind.ImportTypeAssertionContainer */ ? attributesOrQualifier : undefined;\n\t\t\tconst qualifier =\n\t\t\t\tattributesOrQualifier && typescript.isEntityName(attributesOrQualifier)\n\t\t\t\t\t? attributesOrQualifier\n\t\t\t\t\t: qualifierOrTypeArguments && !Array.isArray(qualifierOrTypeArguments)\n\t\t\t\t\t\t? qualifierOrTypeArguments\n\t\t\t\t\t\t: undefined;\n\t\t\tconst typeArguments = Array.isArray(qualifierOrTypeArguments) ? qualifierOrTypeArguments : Array.isArray(typeArgumentsOrIsTypeOf) ? typeArgumentsOrIsTypeOf : undefined;\n\t\t\tisTypeOfOrUndefined = typeof typeArgumentsOrIsTypeOf === \"boolean\" ? typeArgumentsOrIsTypeOf : typeof isTypeOfOrUndefined === \"boolean\" ? isTypeOfOrUndefined : node.isTypeOf;\n\t\t\treturn node.argument !== argument ||\n\t\t\t\tnode.attributes !== attributes ||\n\t\t\t\tnode.qualifier !== qualifier ||\n\t\t\t\tnode.typeArguments !== typeArguments ||\n\t\t\t\tnode.isTypeOf !== isTypeOfOrUndefined\n\t\t\t\t? typescript.setTextRange(\n\t\t\t\t\t\tcreateImportTypeNode(argument, attributesOrQualifier as never, qualifierOrTypeArguments as never, typeArgumentsOrIsTypeOf as never, isTypeOfOrUndefined as never),\n\t\t\t\t\t\tnode\n\t\t\t\t\t)\n\t\t\t\t: node;\n\t\t}\n\t}\n\n\tfunction createClassExpression(\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tname: string | TS.Identifier | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\tmembers: readonly TS.ClassElement[]\n\t): TS.ClassExpression;\n\tfunction createClassExpression(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.Identifier | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\tmembers: readonly TS.ClassElement[]\n\t): TS.ClassExpression;\n\tfunction createClassExpression(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrName: readonly TS.ModifierLike[] | string | TS.Identifier | undefined,\n\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttypeParametersOrHeritageClauses: readonly TS.TypeParameterDeclaration[] | readonly TS.HeritageClause[] | undefined,\n\t\theritageClausesOrMembers: readonly TS.HeritageClause[] | readonly TS.ClassElement[] | undefined,\n\t\tmembersOrUndefined?: readonly TS.ClassElement[]\n\t): TS.ClassExpression {\n\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrHeritageClauses) as readonly TS.TypeParameterDeclaration[];\n\t\tconst heritageClauses = (isShort ? typeParametersOrHeritageClauses : heritageClausesOrMembers) as readonly TS.HeritageClause[] | undefined;\n\t\tconst members = (isShort ? heritageClausesOrMembers : membersOrUndefined) as TS.ClassElement[];\n\n\t\treturn typescript4Cast.createClassExpression(modifiers as never, name as never, typeParameters as never, heritageClauses as never, members as never) as never;\n\t}\n\n\tfunction updateClassExpression(\n\t\tnode: TS.ClassExpression,\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tname: TS.Identifier | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\tmembers: readonly TS.ClassElement[]\n\t): TS.ClassExpression;\n\tfunction updateClassExpression(\n\t\tnode: TS.ClassExpression,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: TS.Identifier | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\tmembers: readonly TS.ClassElement[]\n\t): TS.ClassExpression;\n\tfunction updateClassExpression(\n\t\tnode: TS.ClassExpression,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrName: readonly TS.ModifierLike[] | TS.Identifier | undefined,\n\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttypeParametersOrHeritageClauses: readonly TS.TypeParameterDeclaration[] | readonly TS.HeritageClause[] | undefined,\n\t\theritageClausesOrMembers: readonly TS.HeritageClause[] | readonly TS.ClassElement[] | undefined,\n\t\tmembersOrUndefined?: readonly TS.ClassElement[]\n\t): TS.ClassExpression {\n\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as TS.Identifier;\n\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrHeritageClauses) as readonly TS.TypeParameterDeclaration[];\n\t\tconst heritageClauses = (isShort ? typeParametersOrHeritageClauses : heritageClausesOrMembers) as readonly TS.HeritageClause[] | undefined;\n\t\tconst members = (isShort ? heritageClausesOrMembers : membersOrUndefined) as TS.ClassElement[];\n\n\t\treturn typescript4Cast.updateClassExpression(node as never, modifiers as never, name as never, typeParameters as never, heritageClauses as never, members as never) as never;\n\t}\n\n\tfunction createExportDeclaration(\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tisTypeOnly: boolean,\n\t\texportClause: TS.NamedExportBindings | undefined,\n\t\tmoduleSpecifier?: TS.Expression\n\t): TS.ExportDeclaration;\n\tfunction createExportDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrIsTypeOnly: readonly TS.Modifier[] | boolean | undefined,\n\t\tisTypeOnlyOrExportClause: boolean | TS.NamedExportBindings | undefined,\n\t\texportClauseOrModuleSpecifier: TS.NamedExportBindings | TS.Expression | undefined,\n\t\tmoduleSpecifierOrUndefined?: TS.Expression\n\t): TS.ExportDeclaration;\n\tfunction createExportDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrIsTypeOnly: readonly TS.Modifier[] | boolean | undefined,\n\t\tisTypeOnlyOrExportClause: boolean | TS.NamedExportBindings | undefined,\n\t\texportClauseOrModuleSpecifier: TS.NamedExportBindings | TS.Expression | undefined,\n\t\tmoduleSpecifierOrUndefined?: TS.Expression\n\t): TS.ExportDeclaration {\n\t\tconst isLong = typeof modifiersOrIsTypeOnly !== \"boolean\" && (arguments.length >= 6 || Array.isArray(modifiersOrIsTypeOnly));\n\t\tconst isShort = !isLong;\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrIsTypeOnly as readonly TS.Modifier[]);\n\t\tconst isTypeOnly = (isShort ? modifiersOrIsTypeOnly : isTypeOnlyOrExportClause) as boolean;\n\t\tconst exportClause = (isShort ? isTypeOnlyOrExportClause : exportClauseOrModuleSpecifier) as TS.NamedExportBindings;\n\t\tconst moduleSpecifier = (isShort ? exportClauseOrModuleSpecifier : moduleSpecifierOrUndefined) as TS.Expression | undefined;\n\t\treturn typescript4Cast.createExportDeclaration(decorators as never, modifiers as never, exportClause as never, moduleSpecifier as never, isTypeOnly) as never;\n\t}\n\n\tfunction updateExportDeclaration(\n\t\tnode: TS.ExportDeclaration,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tisTypeOnly: boolean,\n\t\texportClause: TS.NamedExportBindings | undefined,\n\t\tmoduleSpecifier?: TS.Expression\n\t): TS.ExportDeclaration;\n\tfunction updateExportDeclaration(\n\t\tnode: TS.ExportDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrIsTypeOnly: readonly TS.Modifier[] | boolean | undefined,\n\t\tisTypeOnlyOrExportClause: boolean | TS.NamedExportBindings | undefined,\n\t\texportClauseOrModuleSpecifier: TS.NamedExportBindings | TS.Expression | undefined,\n\t\tmoduleSpecifierOrUndefined?: TS.Expression\n\t): TS.ExportDeclaration;\n\tfunction updateExportDeclaration(\n\t\tnode: TS.ExportDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrIsTypeOnly: readonly TS.Modifier[] | boolean | undefined,\n\t\tisTypeOnlyOrExportClause: boolean | TS.NamedExportBindings | undefined,\n\t\texportClauseOrModuleSpecifier: TS.NamedExportBindings | TS.Expression | undefined,\n\t\tmoduleSpecifierOrUndefined?: TS.Expression\n\t): TS.ExportDeclaration {\n\t\tconst isLong = typeof modifiersOrIsTypeOnly !== \"boolean\" && (arguments.length >= 7 || Array.isArray(modifiersOrIsTypeOnly));\n\t\tconst isShort = !isLong;\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrIsTypeOnly as readonly TS.Modifier[]);\n\t\tconst isTypeOnly = (isShort ? modifiersOrIsTypeOnly : isTypeOnlyOrExportClause) as boolean;\n\t\tconst exportClause = (isShort ? isTypeOnlyOrExportClause : exportClauseOrModuleSpecifier) as TS.NamedExportBindings;\n\t\tconst moduleSpecifier = (isShort ? exportClauseOrModuleSpecifier : moduleSpecifierOrUndefined) as TS.Expression | undefined;\n\t\treturn typescript4Cast.updateExportDeclaration(node as never, decorators as never, modifiers as never, exportClause as never, moduleSpecifier as never, isTypeOnly) as never;\n\t}\n\n\tfunction createConstructorDeclaration(\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\tbody: TS.Block | undefined\n\t): TS.ConstructorDeclaration;\n\tfunction createConstructorDeclaration(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\tbody: TS.Block | undefined\n\t): TS.ConstructorDeclaration;\n\tfunction createConstructorDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrParameters: readonly TS.Modifier[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\tparametersOrBody: readonly TS.ParameterDeclaration[] | TS.Block | undefined,\n\t\tbodyOrUndefined?: TS.Block\n\t): TS.ConstructorDeclaration {\n\t\tconst isShort = arguments.length <= 3;\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrParameters as readonly TS.Modifier[]);\n\t\tconst parameters = (isShort ? modifiersOrParameters : parametersOrBody) as readonly TS.ParameterDeclaration[];\n\t\tconst body = (isShort ? parametersOrBody : bodyOrUndefined) as TS.Block | undefined;\n\t\treturn typescript4Cast.createConstructor(decorators as never, modifiers as never, parameters as never, body as never) as never;\n\t}\n\n\tfunction updateConstructorDeclaration(\n\t\tnode: TS.ConstructorDeclaration,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\tbody: TS.Block | undefined\n\t): TS.ConstructorDeclaration;\n\tfunction updateConstructorDeclaration(\n\t\tnode: TS.ConstructorDeclaration,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\tbody: TS.Block | undefined\n\t): TS.ConstructorDeclaration;\n\tfunction updateConstructorDeclaration(\n\t\tnode: TS.ConstructorDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrParameters: readonly TS.Modifier[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\tparametersOrBody: readonly TS.ParameterDeclaration[] | TS.Block | undefined,\n\t\tbodyOrUndefined?: TS.Block\n\t): TS.ConstructorDeclaration {\n\t\tconst isShort = arguments.length <= 4;\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrParameters as readonly TS.Modifier[]);\n\t\tconst parameters = (isShort ? modifiersOrParameters : parametersOrBody) as readonly TS.ParameterDeclaration[];\n\t\tconst body = (isShort ? parametersOrBody : bodyOrUndefined) as TS.Block | undefined;\n\t\treturn typescript4Cast.updateConstructor(node as never, decorators as never, modifiers as never, parameters as never, body as never) as never;\n\t}\n\n\tfunction createMethodDeclaration(\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\tname: string | TS.PropertyName,\n\t\tquestionToken: TS.QuestionToken | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode | undefined,\n\t\tbody: TS.Block | undefined\n\t): TS.MethodDeclaration;\n\tfunction createMethodDeclaration(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\tname: string | TS.PropertyName,\n\t\tquestionToken: TS.QuestionToken | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode | undefined,\n\t\tbody: TS.Block | undefined\n\t): TS.MethodDeclaration;\n\tfunction createMethodDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrAsteriskToken: readonly TS.Modifier[] | TS.AsteriskToken | undefined,\n\t\tasteriskTokenOrName: TS.AsteriskToken | string | TS.PropertyName | undefined,\n\t\tnameOrQuestionToken: string | TS.PropertyName | TS.QuestionToken | undefined,\n\t\tquestionTokenOrTypeParameters: TS.QuestionToken | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttypeParametersOrParameters: readonly TS.TypeParameterDeclaration[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\tparametersOrType: readonly TS.ParameterDeclaration[] | TS.TypeNode | undefined,\n\t\ttypeOrBody: TS.TypeNode | TS.Block | undefined,\n\t\tbodyOrUndefined?: TS.Block\n\t): TS.MethodDeclaration {\n\t\tconst isShort = typeof asteriskTokenOrName === \"string\" || (asteriskTokenOrName != null && asteriskTokenOrName.kind !== (41 as number)); /* AsteriskToken */\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrAsteriskToken as readonly TS.Modifier[]);\n\t\tconst asteriskToken = (isShort ? modifiersOrAsteriskToken : asteriskTokenOrName) as TS.AsteriskToken | undefined;\n\t\tconst name = (isShort ? asteriskTokenOrName : nameOrQuestionToken) as string | TS.Identifier;\n\t\tconst questionToken = (isShort ? nameOrQuestionToken : questionTokenOrTypeParameters) as TS.QuestionToken | undefined;\n\t\tconst typeParameters = (isShort ? questionTokenOrTypeParameters : typeParametersOrParameters) as readonly TS.TypeParameterDeclaration[];\n\t\tconst parameters = (isShort ? typeParametersOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[];\n\t\tconst type = (isShort ? parametersOrType : typeOrBody) as TS.TypeNode;\n\t\tconst body = (isShort ? typeOrBody : bodyOrUndefined) as TS.Block | undefined;\n\n\t\treturn typescript4Cast.createMethod(\n\t\t\tdecorators as never,\n\t\t\tmodifiers as never,\n\t\t\tasteriskToken as never,\n\t\t\tname as never,\n\t\t\tquestionToken as never,\n\t\t\ttypeParameters as never,\n\t\t\tparameters as never,\n\t\t\ttype as never,\n\t\t\tbody as never\n\t\t) as never;\n\t}\n\n\tfunction updateMethodDeclaration(\n\t\tnode: TS.MethodDeclaration,\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\tname: TS.PropertyName,\n\t\tquestionToken: TS.QuestionToken | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode | undefined,\n\t\tbody: TS.Block | undefined\n\t): TS.MethodDeclaration;\n\tfunction updateMethodDeclaration(\n\t\tnode: TS.MethodDeclaration,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\tname: TS.PropertyName,\n\t\tquestionToken: TS.QuestionToken | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode | undefined,\n\t\tbody: TS.Block | undefined\n\t): TS.MethodDeclaration;\n\tfunction updateMethodDeclaration(\n\t\tnode: TS.MethodDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrAsteriskToken: readonly TS.Modifier[] | TS.AsteriskToken | undefined,\n\t\tasteriskTokenOrName: TS.AsteriskToken | TS.PropertyName | undefined,\n\t\tnameOrQuestionToken: TS.PropertyName | TS.QuestionToken | undefined,\n\t\tquestionTokenOrTypeParameters: TS.QuestionToken | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttypeParametersOrParameters: readonly TS.TypeParameterDeclaration[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\tparametersOrType: readonly TS.ParameterDeclaration[] | TS.TypeNode | undefined,\n\t\ttypeOrBody: TS.TypeNode | TS.Block | undefined,\n\t\tbodyOrUndefined?: TS.Block\n\t): TS.MethodDeclaration {\n\t\tconst isShort = asteriskTokenOrName?.kind !== (41 as number); /* AsteriskToken */\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrAsteriskToken as readonly TS.Modifier[]);\n\t\tconst asteriskToken = (isShort ? modifiersOrAsteriskToken : asteriskTokenOrName) as TS.AsteriskToken | undefined;\n\t\tconst name = (isShort ? asteriskTokenOrName : nameOrQuestionToken) as TS.Identifier;\n\t\tconst questionToken = (isShort ? nameOrQuestionToken : questionTokenOrTypeParameters) as TS.QuestionToken | undefined;\n\t\tconst typeParameters = (isShort ? questionTokenOrTypeParameters : typeParametersOrParameters) as readonly TS.TypeParameterDeclaration[];\n\t\tconst parameters = (isShort ? typeParametersOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[];\n\t\tconst type = (isShort ? parametersOrType : typeOrBody) as TS.TypeNode;\n\t\tconst body = (isShort ? typeOrBody : bodyOrUndefined) as TS.Block | undefined;\n\n\t\treturn typescript4Cast.updateMethod(\n\t\t\tnode as never,\n\t\t\tdecorators as never,\n\t\t\tmodifiers as never,\n\t\t\tasteriskToken as never,\n\t\t\tname as never,\n\t\t\tquestionToken as never,\n\t\t\ttypeParameters as never,\n\t\t\tparameters as never,\n\t\t\ttype as never,\n\t\t\tbody as never\n\t\t) as never;\n\t}\n\n\tfunction createParameterDeclaration(\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tdotDotDotToken: TS.DotDotDotToken | undefined,\n\t\tname: string | TS.BindingName,\n\t\tquestionToken?: TS.QuestionToken,\n\t\ttype?: TS.TypeNode,\n\t\tinitializer?: TS.Expression\n\t): TS.ParameterDeclaration;\n\tfunction createParameterDeclaration(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tdotDotDotToken: TS.DotDotDotToken | undefined,\n\t\tname: string | TS.BindingName,\n\t\tquestionToken?: TS.QuestionToken,\n\t\ttype?: TS.TypeNode,\n\t\tinitializer?: TS.Expression\n\t): TS.ParameterDeclaration;\n\tfunction createParameterDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrDotDotDotToken: readonly TS.Modifier[] | TS.DotDotDotToken | undefined,\n\t\tdotDotDotTokenOrName: TS.DotDotDotToken | string | TS.BindingName | undefined,\n\t\tnameOrQuestionToken: string | TS.BindingName | TS.QuestionToken | undefined,\n\t\tquestionTokenOrType?: TS.QuestionToken | TS.TypeNode,\n\t\ttypeOrInitializer?: TS.TypeNode | TS.Expression,\n\t\tinitializerOrUndefined?: TS.Expression\n\t): TS.ParameterDeclaration {\n\t\tconst isShort = typeof dotDotDotTokenOrName === \"string\" || (dotDotDotTokenOrName != null && dotDotDotTokenOrName.kind !== (25 as number)); /* DotDotDotToken */\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrDotDotDotToken as readonly TS.Modifier[]);\n\t\tconst dotDotDotToken = (isShort ? modifiersOrDotDotDotToken : dotDotDotTokenOrName) as TS.DotDotDotToken | undefined;\n\t\tconst name = (isShort ? dotDotDotTokenOrName : nameOrQuestionToken) as string | TS.BindingName;\n\t\tconst questionToken = (isShort ? nameOrQuestionToken : questionTokenOrType) as TS.QuestionToken;\n\t\tconst type = (isShort ? questionTokenOrType : typeOrInitializer) as TS.TypeNode | undefined;\n\t\tconst initializer = (isShort ? typeOrInitializer : initializerOrUndefined) as TS.Expression | undefined;\n\n\t\treturn typescript4Cast.createParameter(\n\t\t\tdecorators as never,\n\t\t\tmodifiers as never,\n\t\t\tdotDotDotToken as never,\n\t\t\tname as never,\n\t\t\tquestionToken as never,\n\t\t\ttype as never,\n\t\t\tinitializer as never\n\t\t) as never;\n\t}\n\n\tfunction updateParameterDeclaration(\n\t\tnode: TS.ParameterDeclaration,\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tdotDotDotToken: TS.DotDotDotToken | undefined,\n\t\tname: string | TS.BindingName,\n\t\tquestionToken?: TS.QuestionToken,\n\t\ttype?: TS.TypeNode,\n\t\tinitializer?: TS.Expression\n\t): TS.ParameterDeclaration;\n\tfunction updateParameterDeclaration(\n\t\tnode: TS.ParameterDeclaration,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tdotDotDotToken: TS.DotDotDotToken | undefined,\n\t\tname: string | TS.BindingName,\n\t\tquestionToken?: TS.QuestionToken,\n\t\ttype?: TS.TypeNode,\n\t\tinitializer?: TS.Expression\n\t): TS.ParameterDeclaration;\n\tfunction updateParameterDeclaration(\n\t\tnode: TS.ParameterDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrDotDotDotToken: readonly TS.Modifier[] | TS.DotDotDotToken | undefined,\n\t\tdotDotDotTokenOrName: TS.DotDotDotToken | string | TS.BindingName | undefined,\n\t\tnameOrQuestionToken: string | TS.BindingName | TS.QuestionToken | undefined,\n\t\tquestionTokenOrType?: TS.QuestionToken | TS.TypeNode,\n\t\ttypeOrInitializer?: TS.TypeNode | TS.Expression,\n\t\tinitializerOrUndefined?: TS.Expression\n\t): TS.ParameterDeclaration {\n\t\tconst isShort = typeof dotDotDotTokenOrName === \"string\" || (dotDotDotTokenOrName != null && dotDotDotTokenOrName.kind !== (25 as number)); /* DotDotDotToken */\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrDotDotDotToken as readonly TS.Modifier[]);\n\t\tconst dotDotDotToken = (isShort ? modifiersOrDotDotDotToken : dotDotDotTokenOrName) as TS.DotDotDotToken | undefined;\n\t\tconst name = (isShort ? dotDotDotTokenOrName : nameOrQuestionToken) as string | TS.BindingName;\n\t\tconst questionToken = (isShort ? nameOrQuestionToken : questionTokenOrType) as TS.QuestionToken;\n\t\tconst type = (isShort ? questionTokenOrType : typeOrInitializer) as TS.TypeNode | undefined;\n\t\tconst initializer = (isShort ? typeOrInitializer : initializerOrUndefined) as TS.Expression | undefined;\n\n\t\treturn typescript4Cast.updateParameter(\n\t\t\tnode as never,\n\t\t\tdecorators as never,\n\t\t\tmodifiers as never,\n\t\t\tdotDotDotToken as never,\n\t\t\tname as never,\n\t\t\tquestionToken as never,\n\t\t\ttype as never,\n\t\t\tinitializer as never\n\t\t) as never;\n\t}\n\n\tfunction createPropertyDeclaration(\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tname: string | TS.PropertyName,\n\t\tquestionOrExclamationToken: TS.QuestionToken | TS.ExclamationToken | undefined,\n\t\ttype: TS.TypeNode | undefined,\n\t\tinitializer: TS.Expression | undefined\n\t): TS.PropertyDeclaration;\n\tfunction createPropertyDeclaration(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.PropertyName,\n\t\tquestionOrExclamationToken: TS.QuestionToken | TS.ExclamationToken | undefined,\n\t\ttype: TS.TypeNode | undefined,\n\t\tinitializer: TS.Expression | undefined\n\t): TS.PropertyDeclaration;\n\tfunction createPropertyDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.PropertyName | undefined,\n\t\tnameOrQuestionOrExclamationToken: string | TS.PropertyName | TS.QuestionToken | TS.ExclamationToken | undefined,\n\t\tquestionOrExclamationTokenOrType: TS.QuestionToken | TS.ExclamationToken | TS.TypeNode | undefined,\n\t\ttypeOrInitializer: TS.TypeNode | TS.Expression | undefined,\n\t\tinitializerOrUndefined?: TS.Expression\n\t): TS.PropertyDeclaration {\n\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName));\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrQuestionOrExclamationToken) as string | TS.PropertyName;\n\t\tconst questionOrExclamationToken = (isShort ? nameOrQuestionOrExclamationToken : questionOrExclamationTokenOrType) as TS.QuestionToken | TS.ExclamationToken | undefined;\n\t\tconst type = (isShort ? questionOrExclamationTokenOrType : typeOrInitializer) as TS.TypeNode | undefined;\n\t\tconst initializer = (isShort ? typeOrInitializer : initializerOrUndefined) as TS.Expression | undefined;\n\n\t\treturn typescript4Cast.createProperty(\n\t\t\tdecorators as never,\n\t\t\tmodifiers as never,\n\t\t\tname as never,\n\t\t\tquestionOrExclamationToken as never,\n\t\t\ttype as never,\n\t\t\tinitializer as never\n\t\t) as never;\n\t}\n\n\tfunction updatePropertyDeclaration(\n\t\tnode: TS.PropertyDeclaration,\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tname: string | TS.PropertyName,\n\t\tquestionOrExclamationToken: TS.QuestionToken | TS.ExclamationToken | undefined,\n\t\ttype: TS.TypeNode | undefined,\n\t\tinitializer: TS.Expression | undefined\n\t): TS.PropertyDeclaration;\n\tfunction updatePropertyDeclaration(\n\t\tnode: TS.PropertyDeclaration,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.PropertyName,\n\t\tquestionOrExclamationToken: TS.QuestionToken | TS.ExclamationToken | undefined,\n\t\ttype: TS.TypeNode | undefined,\n\t\tinitializer: TS.Expression | undefined\n\t): TS.PropertyDeclaration;\n\tfunction updatePropertyDeclaration(\n\t\tnode: TS.PropertyDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.PropertyName | undefined,\n\t\tnameOrQuestionOrExclamationToken: string | TS.PropertyName | TS.QuestionToken | TS.ExclamationToken | undefined,\n\t\tquestionOrExclamationTokenOrType: TS.QuestionToken | TS.ExclamationToken | TS.TypeNode | undefined,\n\t\ttypeOrInitializer: TS.TypeNode | TS.Expression | undefined,\n\t\tinitializerOrUndefined?: TS.Expression\n\t): TS.PropertyDeclaration {\n\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName));\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrQuestionOrExclamationToken) as string | TS.PropertyName;\n\t\tconst questionOrExclamationToken = (isShort ? nameOrQuestionOrExclamationToken : questionOrExclamationTokenOrType) as TS.QuestionToken | TS.ExclamationToken | undefined;\n\t\tconst type = (isShort ? questionOrExclamationTokenOrType : typeOrInitializer) as TS.TypeNode | undefined;\n\t\tconst initializer = (isShort ? typeOrInitializer : initializerOrUndefined) as TS.Expression | undefined;\n\n\t\treturn typescript4Cast.updateProperty(\n\t\t\tnode as never,\n\t\t\tdecorators as never,\n\t\t\tmodifiers as never,\n\t\t\tname as never,\n\t\t\tquestionOrExclamationToken as never,\n\t\t\ttype as never,\n\t\t\tinitializer as never\n\t\t) as never;\n\t}\n\n\tfunction createSetAccessorDeclaration(\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tname: string | TS.PropertyName,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\tbody: TS.Block | undefined\n\t): TS.SetAccessorDeclaration;\n\tfunction createSetAccessorDeclaration(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.PropertyName,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\tbody: TS.Block | undefined\n\t): TS.SetAccessorDeclaration;\n\tfunction createSetAccessorDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.PropertyName | undefined,\n\t\tnameOrParameters: string | TS.PropertyName | readonly TS.ParameterDeclaration[],\n\t\tparametersOrBody: readonly TS.ParameterDeclaration[] | TS.Block | undefined,\n\t\tbodyOrUndefined?: TS.Block\n\t): TS.SetAccessorDeclaration {\n\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName));\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrParameters) as string | TS.PropertyName;\n\t\tconst parameters = (isShort ? nameOrParameters : parametersOrBody) as readonly TS.ParameterDeclaration[];\n\t\tconst body = (isShort ? parametersOrBody : bodyOrUndefined) as TS.Block | undefined;\n\n\t\treturn typescript4Cast.createSetAccessor(decorators as never, modifiers as never, name as never, parameters as never, body as never) as never;\n\t}\n\n\tfunction updateSetAccessorDeclaration(\n\t\tnode: TS.SetAccessorDeclaration,\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tname: TS.PropertyName,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\tbody: TS.Block | undefined\n\t): TS.SetAccessorDeclaration;\n\tfunction updateSetAccessorDeclaration(\n\t\tnode: TS.SetAccessorDeclaration,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: TS.PropertyName,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\tbody: TS.Block | undefined\n\t): TS.SetAccessorDeclaration;\n\tfunction updateSetAccessorDeclaration(\n\t\tnode: TS.SetAccessorDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.PropertyName | undefined,\n\t\tnameOrParameters: TS.PropertyName | readonly TS.ParameterDeclaration[],\n\t\tparametersOrBody: readonly TS.ParameterDeclaration[] | TS.Block | undefined,\n\t\tbodyOrUndefined?: TS.Block\n\t): TS.SetAccessorDeclaration {\n\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName));\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrParameters) as TS.PropertyName;\n\t\tconst parameters = (isShort ? nameOrParameters : parametersOrBody) as readonly TS.ParameterDeclaration[];\n\t\tconst body = (isShort ? parametersOrBody : bodyOrUndefined) as TS.Block | undefined;\n\n\t\treturn typescript4Cast.updateSetAccessor(node as never, decorators as never, modifiers as never, name as never, parameters as never, body as never) as never;\n\t}\n\n\tfunction createGetAccessorDeclaration(\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tname: string | TS.PropertyName,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode | undefined,\n\t\tbody: TS.Block | undefined\n\t): TS.GetAccessorDeclaration;\n\tfunction createGetAccessorDeclaration(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.PropertyName,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode | undefined,\n\t\tbody: TS.Block | undefined\n\t): TS.GetAccessorDeclaration;\n\tfunction createGetAccessorDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.PropertyName | undefined,\n\t\tnameOrParameters: string | TS.PropertyName | readonly TS.ParameterDeclaration[],\n\t\tparametersOrType: readonly TS.ParameterDeclaration[] | TS.TypeNode | undefined,\n\t\ttypeOrBody: TS.TypeNode | TS.Block | undefined,\n\t\tbodyOrUndefined?: TS.Block\n\t): TS.GetAccessorDeclaration {\n\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName));\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrParameters) as TS.PropertyName;\n\t\tconst parameters = (isShort ? nameOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[];\n\t\tconst type = (isShort ? parametersOrType : typeOrBody) as TS.TypeNode | undefined;\n\t\tconst body = (isShort ? typeOrBody : bodyOrUndefined) as TS.Block | undefined;\n\n\t\treturn typescript4Cast.createGetAccessor(decorators as never, modifiers as never, name as never, parameters as never, type as never, body as never) as never;\n\t}\n\n\tfunction updateGetAccessorDeclaration(\n\t\tnode: TS.GetAccessorDeclaration,\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tname: string | TS.PropertyName,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode | undefined,\n\t\tbody: TS.Block | undefined\n\t): TS.GetAccessorDeclaration;\n\tfunction updateGetAccessorDeclaration(\n\t\tnode: TS.GetAccessorDeclaration,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.PropertyName,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode | undefined,\n\t\tbody: TS.Block | undefined\n\t): TS.GetAccessorDeclaration;\n\tfunction updateGetAccessorDeclaration(\n\t\tnode: TS.GetAccessorDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.PropertyName | undefined,\n\t\tnameOrParameters: string | TS.PropertyName | readonly TS.ParameterDeclaration[],\n\t\tparametersOrType: readonly TS.ParameterDeclaration[] | TS.TypeNode | undefined,\n\t\ttypeOrBody: TS.TypeNode | TS.Block | undefined,\n\t\tbodyOrUndefined?: TS.Block\n\t): TS.GetAccessorDeclaration {\n\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName));\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrParameters) as TS.PropertyName;\n\t\tconst parameters = (isShort ? nameOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[];\n\t\tconst type = (isShort ? parametersOrType : typeOrBody) as TS.TypeNode | undefined;\n\t\tconst body = (isShort ? typeOrBody : bodyOrUndefined) as TS.Block | undefined;\n\n\t\treturn typescript4Cast.updateGetAccessor(node as never, decorators as never, modifiers as never, name as never, parameters as never, type as never, body as never) as never;\n\t}\n\n\tfunction createImportEqualsDeclaration(\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tisTypeOnly: boolean,\n\t\tname: string | TS.Identifier,\n\t\tmoduleReference: TS.ModuleReference\n\t): TS.ImportEqualsDeclaration;\n\tfunction createImportEqualsDeclaration(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tisTypeOnly: boolean,\n\t\tname: string | TS.Identifier,\n\t\tmoduleReference: TS.ModuleReference\n\t): TS.ImportEqualsDeclaration;\n\tfunction createImportEqualsDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrIsTypeOnly: readonly TS.Modifier[] | boolean | undefined,\n\t\tisTypeOnlyOrName: boolean | string | TS.Identifier,\n\t\tnameOrModuleReference: string | TS.Identifier | TS.ModuleReference,\n\t\tmoduleReferenceOrUndefined?: TS.ModuleReference\n\t): TS.ImportEqualsDeclaration {\n\t\tconst isShort = arguments.length <= 4;\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrIsTypeOnly as readonly TS.Modifier[]);\n\t\tconst isTypeOnly = (isShort ? modifiersOrIsTypeOnly : isTypeOnlyOrName) as boolean;\n\t\tconst name = (isShort ? isTypeOnlyOrName : nameOrModuleReference) as string | TS.Identifier;\n\t\tconst moduleReference = (isShort ? nameOrModuleReference : moduleReferenceOrUndefined) as TS.ModuleReference;\n\n\t\tif (typescript4Cast.createImportEqualsDeclaration.length === 4) {\n\t\t\treturn (typescript as unknown as typeof import(\"typescript-3-9-2\")).createImportEqualsDeclaration(\n\t\t\t\tdecorators as never,\n\t\t\t\tmodifiers as never,\n\t\t\t\tname as never,\n\t\t\t\tmoduleReference as never\n\t\t\t) as unknown as TS.ImportEqualsDeclaration;\n\t\t} else {\n\t\t\tconst normalizedName = typeof name === \"string\" ? (typescript4Cast.createIdentifier(name as never) as never) : name;\n\t\t\treturn typescript4Cast.createImportEqualsDeclaration(\n\t\t\t\tdecorators as never,\n\t\t\t\tmodifiers as never,\n\t\t\t\tisTypeOnly,\n\t\t\t\tnormalizedName as never,\n\t\t\t\tmoduleReference as never\n\t\t\t) as unknown as TS.ImportEqualsDeclaration;\n\t\t}\n\t}\n\n\tfunction updateImportEqualsDeclaration(\n\t\tnode: TS.ImportEqualsDeclaration,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tisTypeOnly: boolean,\n\t\tname: string | TS.Identifier,\n\t\tmoduleReference: TS.ModuleReference\n\t): TS.ImportEqualsDeclaration;\n\tfunction updateImportEqualsDeclaration(\n\t\tnode: TS.ImportEqualsDeclaration,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tisTypeOnly: boolean,\n\t\tname: string | TS.Identifier,\n\t\tmoduleReference: TS.ModuleReference\n\t): TS.ImportEqualsDeclaration;\n\tfunction updateImportEqualsDeclaration(\n\t\tnode: TS.ImportEqualsDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrIsTypeOnly: readonly TS.Modifier[] | boolean | undefined,\n\t\tisTypeOnlyOrName: boolean | string | TS.Identifier,\n\t\tnameOrModuleReference: string | TS.Identifier | TS.ModuleReference,\n\t\tmoduleReferenceOrUndefined?: TS.ModuleReference\n\t): TS.ImportEqualsDeclaration {\n\t\tconst isShort = arguments.length <= 5;\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.Modifier[])[1] : (modifiersOrIsTypeOnly as readonly TS.Modifier[]);\n\t\tconst isTypeOnly = (isShort ? modifiersOrIsTypeOnly : isTypeOnlyOrName) as boolean;\n\t\tconst name = (isShort ? isTypeOnlyOrName : nameOrModuleReference) as string | TS.Identifier;\n\t\tconst moduleReference = (isShort ? nameOrModuleReference : moduleReferenceOrUndefined) as TS.ModuleReference;\n\t\tconst normalizedName = typeof name === \"string\" ? (typescript4Cast.createIdentifier(name) as never) : name;\n\n\t\tif (typescript4Cast.updateImportEqualsDeclaration.length === 5) {\n\t\t\treturn (typescript as unknown as typeof import(\"typescript-3-9-2\")).updateImportEqualsDeclaration(\n\t\t\t\tnode as never,\n\t\t\t\tdecorators as never,\n\t\t\t\tmodifiers as never,\n\t\t\t\tnormalizedName as never,\n\t\t\t\tmoduleReference as never\n\t\t\t) as unknown as TS.ImportEqualsDeclaration;\n\t\t} else {\n\t\t\treturn typescript4Cast.updateImportEqualsDeclaration(\n\t\t\t\tnode as never,\n\t\t\t\tdecorators as never,\n\t\t\t\tmodifiers as never,\n\t\t\t\tisTypeOnly,\n\t\t\t\tnormalizedName as never,\n\t\t\t\tmoduleReference as never\n\t\t\t) as unknown as TS.ImportEqualsDeclaration;\n\t\t}\n\t}\n\n\tfunction createIndexSignature(modifiers: readonly TS.Modifier[] | undefined, parameters: readonly TS.ParameterDeclaration[], type: TS.TypeNode): TS.IndexSignatureDeclaration;\n\tfunction createIndexSignature(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode\n\t): TS.IndexSignatureDeclaration;\n\tfunction createIndexSignature(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrParameters: readonly TS.Modifier[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\tparametersOrType: readonly TS.ParameterDeclaration[] | TS.TypeNode,\n\t\ttypeOrUndefined?: TS.TypeNode\n\t): TS.IndexSignatureDeclaration {\n\t\tconst isShort = arguments.length <= 3;\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrParameters as readonly TS.Modifier[]);\n\t\tconst parameters = (isShort ? modifiersOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[];\n\t\tconst type = (isShort ? parametersOrType : typeOrUndefined) as TS.TypeNode;\n\n\t\treturn typescript4Cast.createIndexSignature(decorators as never, modifiers as never, parameters as never, type as never) as never;\n\t}\n\n\tfunction updateIndexSignature(\n\t\tnode: TS.IndexSignatureDeclaration,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode\n\t): TS.IndexSignatureDeclaration;\n\tfunction updateIndexSignature(\n\t\tnode: TS.IndexSignatureDeclaration,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode\n\t): TS.IndexSignatureDeclaration;\n\tfunction updateIndexSignature(\n\t\tnode: TS.IndexSignatureDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrParameters: readonly TS.Modifier[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\tparametersOrType: readonly TS.ParameterDeclaration[] | TS.TypeNode,\n\t\ttypeOrUndefined?: TS.TypeNode\n\t): TS.IndexSignatureDeclaration {\n\t\tconst isShort = arguments.length <= 4;\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrParameters as readonly TS.Modifier[]);\n\t\tconst parameters = (isShort ? modifiersOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[];\n\t\tconst type = (isShort ? parametersOrType : typeOrUndefined) as TS.TypeNode;\n\n\t\treturn typescript4Cast.updateIndexSignature(node as never, decorators as never, modifiers as never, parameters as never, type as never) as never;\n\t}\n\n\tfunction createImportDeclaration(\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\timportClause: TS.ImportClause | undefined,\n\t\tmoduleSpecifier: TS.Expression,\n\t\tattributes?: TS.ImportAttributes\n\t): TS.ImportDeclaration;\n\tfunction createImportDeclaration(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\timportClause: TS.ImportClause | undefined,\n\t\tmoduleSpecifier: TS.Expression,\n\t\tattributes?: TS.ImportAttributes\n\t): TS.ImportDeclaration;\n\tfunction createImportDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrImportClause: readonly TS.Modifier[] | TS.ImportClause | undefined,\n\t\timportClauseOrModuleSpecifier: TS.ImportClause | TS.Expression | undefined,\n\t\tmoduleSpecifierOrAttributes: TS.Expression | TS.ImportAttributes | undefined,\n\t\t_?: TS.ImportAttributes\n\t): TS.ImportDeclaration {\n\t\tconst isShort = importClauseOrModuleSpecifier != null && !(\"namedBindings\" in importClauseOrModuleSpecifier) && !(\"isTypeOnly\" in importClauseOrModuleSpecifier);\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrImportClause as readonly TS.Modifier[]);\n\t\tconst importClause = (isShort ? modifiersOrImportClause : importClauseOrModuleSpecifier) as TS.ImportClause | undefined;\n\t\tconst moduleSpecifier = (isShort ? importClauseOrModuleSpecifier : moduleSpecifierOrAttributes) as TS.Expression;\n\n\t\treturn typescript4Cast.createImportDeclaration(decorators as never, modifiers as never, importClause as never, moduleSpecifier as never) as unknown as TS.ImportDeclaration;\n\t}\n\n\tfunction updateImportDeclaration(\n\t\tnode: TS.ImportDeclaration,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\timportClause: TS.ImportClause | undefined,\n\t\tmoduleSpecifier: TS.Expression,\n\t\tattributes?: TS.ImportAttributes\n\t): TS.ImportDeclaration;\n\tfunction updateImportDeclaration(\n\t\tnode: TS.ImportDeclaration,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\timportClause: TS.ImportClause | undefined,\n\t\tmoduleSpecifier: TS.Expression,\n\t\tattributes?: TS.ImportAttributes\n\t): TS.ImportDeclaration;\n\tfunction updateImportDeclaration(\n\t\tnode: TS.ImportDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrImportClause: readonly TS.Modifier[] | TS.ImportClause | undefined,\n\t\timportClauseOrModuleSpecifier: TS.ImportClause | TS.Expression | undefined,\n\t\tmoduleSpecifierOrAttributes: TS.Expression | TS.ImportAttributes | undefined,\n\t\t_?: TS.ImportAttributes\n\t): TS.ImportDeclaration {\n\t\tconst isShort = importClauseOrModuleSpecifier != null && !(\"namedBindings\" in importClauseOrModuleSpecifier) && !(\"isTypeOnly\" in importClauseOrModuleSpecifier);\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrImportClause as readonly TS.Modifier[]);\n\t\tconst importClause = (isShort ? modifiersOrImportClause : importClauseOrModuleSpecifier) as TS.ImportClause | undefined;\n\t\tconst moduleSpecifier = (isShort ? importClauseOrModuleSpecifier : moduleSpecifierOrAttributes) as TS.Expression;\n\n\t\treturn typescript4Cast.updateImportDeclaration(\n\t\t\tnode as never,\n\t\t\tdecorators as never,\n\t\t\tmodifiers as never,\n\t\t\timportClause as never,\n\t\t\tmoduleSpecifier as never,\n\t\t\tundefined\n\t\t) as unknown as TS.ImportDeclaration;\n\t}\n\n\tconst createPrivateIdentifier =\n\t\t(typescript4Cast.createPrivateIdentifier as unknown as TS.NodeFactory[\"createPrivateIdentifier\"]) ??\n\t\t(() =>\n\t\t\tfunction (text: string): TS.PrivateIdentifier {\n\t\t\t\tconst node = typescript4Cast.createIdentifier(text as never) as unknown as Mutable<TS.PrivateIdentifier>;\n\t\t\t\treturn node;\n\t\t\t})();\n\n\tfunction createUniquePrivateName(text?: string): TS.PrivateIdentifier {\n\t\tif (text != null && !text.startsWith(\"#\")) {\n\t\t\tthrow new TypeError(\"First character of private identifier must be #: \" + text);\n\t\t}\n\n\t\tconst node = createPrivateIdentifier(text ?? \"\");\n\t\treturn node;\n\t}\n\n\tfunction getGeneratedPrivateNameForNode(node: TS.Node): TS.PrivateIdentifier {\n\t\treturn createPrivateIdentifier(\"\") as never;\n\t}\n\n\tfunction createTypeAliasDeclaration(\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.Identifier,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttype: TS.TypeNode\n\t): TS.TypeAliasDeclaration;\n\tfunction createTypeAliasDeclaration(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.Identifier,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttype: TS.TypeNode\n\t): TS.TypeAliasDeclaration;\n\tfunction createTypeAliasDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttypeParametersOrType: readonly TS.TypeParameterDeclaration[] | TS.TypeNode | undefined,\n\t\ttypeOrUndefined?: TS.TypeNode\n\t): TS.TypeAliasDeclaration {\n\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrType) as readonly TS.TypeParameterDeclaration[];\n\t\tconst type = (isShort ? typeParametersOrType : typeOrUndefined) as TS.TypeNode[] | undefined;\n\n\t\treturn typescript4Cast.createTypeAliasDeclaration(decorators as never, modifiers as never, name as never, typeParameters as never, type as never) as never;\n\t}\n\n\tfunction updateTypeAliasDeclaration(\n\t\tnode: TS.TypeAliasDeclaration,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.Identifier,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttype: TS.TypeNode\n\t): TS.TypeAliasDeclaration;\n\tfunction updateTypeAliasDeclaration(\n\t\tnode: TS.TypeAliasDeclaration,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.Identifier,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttype: TS.TypeNode\n\t): TS.TypeAliasDeclaration;\n\tfunction updateTypeAliasDeclaration(\n\t\tnode: TS.TypeAliasDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttypeParametersOrType: readonly TS.TypeParameterDeclaration[] | TS.TypeNode | undefined,\n\t\ttypeOrUndefined?: TS.TypeNode\n\t): TS.TypeAliasDeclaration {\n\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrType) as readonly TS.TypeParameterDeclaration[];\n\t\tconst type = (isShort ? typeParametersOrType : typeOrUndefined) as TS.TypeNode[] | undefined;\n\n\t\treturn typescript4Cast.updateTypeAliasDeclaration(node as never, decorators as never, modifiers as never, name as never, typeParameters as never, type as never) as never;\n\t}\n\n\tfunction createFunctionDeclaration(\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\tname: string | TS.Identifier | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode | undefined,\n\t\tbody: TS.Block | undefined\n\t): TS.FunctionDeclaration;\n\tfunction createFunctionDeclaration(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\tname: string | TS.Identifier | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode | undefined,\n\t\tbody: TS.Block | undefined\n\t): TS.FunctionDeclaration;\n\tfunction createFunctionDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrAsteriskToken: readonly TS.Modifier[] | TS.AsteriskToken | undefined,\n\t\tasteriskTokenOrName: TS.AsteriskToken | string | TS.Identifier | undefined,\n\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttypeParametersOrParameters: readonly TS.TypeParameterDeclaration[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\tparametersOrType: readonly TS.ParameterDeclaration[] | TS.TypeNode | undefined,\n\t\ttypeOrBody: TS.TypeNode | TS.Block | undefined,\n\t\tbodyOrUndefined?: TS.Block\n\t): TS.FunctionDeclaration {\n\t\tconst isShort = arguments.length <= 7;\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrAsteriskToken as readonly TS.Modifier[]);\n\t\tconst asteriskToken = (isShort ? modifiersOrAsteriskToken : asteriskTokenOrName) as TS.AsteriskToken | undefined;\n\t\tconst name = (isShort ? asteriskTokenOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrParameters) as readonly TS.TypeParameterDeclaration[];\n\t\tconst parameters = (isShort ? typeParametersOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[] | undefined;\n\t\tconst type = (isShort ? parametersOrType : typeOrBody) as TS.TypeNode;\n\t\tconst body = (isShort ? typeOrBody : bodyOrUndefined) as TS.Block | undefined;\n\n\t\treturn typescript4Cast.createFunctionDeclaration(\n\t\t\tdecorators as never,\n\t\t\tmodifiers as never,\n\t\t\tasteriskToken as never,\n\t\t\tname as never,\n\t\t\ttypeParameters as never,\n\t\t\tparameters as never,\n\t\t\ttype as never,\n\t\t\tbody as never\n\t\t) as unknown as TS.FunctionDeclaration;\n\t}\n\n\tfunction updateFunctionDeclaration(\n\t\tnode: TS.FunctionDeclaration,\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\tname: string | TS.Identifier | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode | undefined,\n\t\tbody: TS.Block | undefined\n\t): TS.FunctionDeclaration;\n\tfunction updateFunctionDeclaration(\n\t\tnode: TS.FunctionDeclaration,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tasteriskToken: TS.AsteriskToken | undefined,\n\t\tname: string | TS.Identifier | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\ttype: TS.TypeNode | undefined,\n\t\tbody: TS.Block | undefined\n\t): TS.FunctionDeclaration;\n\tfunction updateFunctionDeclaration(\n\t\tnode: TS.FunctionDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrAsteriskToken: readonly TS.Modifier[] | TS.AsteriskToken | undefined,\n\t\tasteriskTokenOrName: TS.AsteriskToken | string | TS.Identifier | undefined,\n\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttypeParametersOrParameters: readonly TS.TypeParameterDeclaration[] | readonly TS.ParameterDeclaration[] | undefined,\n\t\tparametersOrType: readonly TS.ParameterDeclaration[] | TS.TypeNode | undefined,\n\t\ttypeOrBody: TS.TypeNode | TS.Block | undefined,\n\t\tbodyOrUndefined?: TS.Block\n\t): TS.FunctionDeclaration {\n\t\tconst isShort = arguments.length <= 8;\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrAsteriskToken as readonly TS.Modifier[]);\n\t\tconst asteriskToken = (isShort ? modifiersOrAsteriskToken : asteriskTokenOrName) as TS.AsteriskToken | undefined;\n\t\tconst name = (isShort ? asteriskTokenOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrParameters) as readonly TS.TypeParameterDeclaration[];\n\t\tconst parameters = (isShort ? typeParametersOrParameters : parametersOrType) as readonly TS.ParameterDeclaration[] | undefined;\n\t\tconst type = (isShort ? parametersOrType : typeOrBody) as TS.TypeNode;\n\t\tconst body = (isShort ? typeOrBody : bodyOrUndefined) as TS.Block | undefined;\n\n\t\treturn typescript4Cast.updateFunctionDeclaration(\n\t\t\tnode as never,\n\t\t\tdecorators as never,\n\t\t\tmodifiers as never,\n\t\t\tasteriskToken as never,\n\t\t\tname as never,\n\t\t\ttypeParameters as never,\n\t\t\tparameters as never,\n\t\t\ttype as never,\n\t\t\tbody as never\n\t\t) as unknown as TS.FunctionDeclaration;\n\t}\n\n\tfunction createClassDeclaration(\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tname: string | TS.Identifier | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\tmembers: readonly TS.ClassElement[]\n\t): TS.ClassDeclaration;\n\tfunction createClassDeclaration(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.Identifier | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\tmembers: readonly TS.ClassElement[]\n\t): TS.ClassDeclaration;\n\tfunction createClassDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttypeParametersOrHeritageClauses: readonly TS.TypeParameterDeclaration[] | readonly TS.HeritageClause[] | undefined,\n\t\theritageClausesOrMembers: readonly TS.HeritageClause[] | readonly TS.ClassElement[] | undefined,\n\t\tmembersOrUndefined?: readonly TS.ClassElement[]\n\t): TS.ClassDeclaration {\n\t\tconst isShort = arguments.length <= 5;\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrHeritageClauses) as readonly TS.TypeParameterDeclaration[];\n\t\tconst heritageClauses = (isShort ? typeParametersOrHeritageClauses : heritageClausesOrMembers) as readonly TS.HeritageClause[] | undefined;\n\t\tconst members = (isShort ? heritageClausesOrMembers : membersOrUndefined) as TS.ClassElement[];\n\n\t\treturn typescript4Cast.createClassDeclaration(\n\t\t\tdecorators as never,\n\t\t\tmodifiers as never,\n\t\t\tname as never,\n\t\t\ttypeParameters as never,\n\t\t\theritageClauses as never,\n\t\t\tmembers as never\n\t\t) as unknown as TS.ClassDeclaration;\n\t}\n\n\tfunction updateClassDeclaration(\n\t\tnode: TS.ClassDeclaration,\n\t\tmodifiers: readonly TS.ModifierLike[] | undefined,\n\t\tname: string | TS.Identifier | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\tmembers: readonly TS.ClassElement[]\n\t): TS.ClassDeclaration;\n\tfunction updateClassDeclaration(\n\t\tnode: TS.ClassDeclaration,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.Identifier | undefined,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\tmembers: readonly TS.ClassElement[]\n\t): TS.ClassDeclaration;\n\tfunction updateClassDeclaration(\n\t\tnode: TS.ClassDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.ModifierLike[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttypeParametersOrHeritageClauses: readonly TS.TypeParameterDeclaration[] | readonly TS.HeritageClause[] | undefined,\n\t\theritageClausesOrMembers: readonly TS.HeritageClause[] | readonly TS.ClassElement[] | undefined,\n\t\tmembersOrUndefined?: readonly TS.ClassElement[]\n\t): TS.ClassDeclaration {\n\t\tconst isShort = arguments.length <= 6;\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrHeritageClauses) as readonly TS.TypeParameterDeclaration[];\n\t\tconst heritageClauses = (isShort ? typeParametersOrHeritageClauses : heritageClausesOrMembers) as readonly TS.HeritageClause[] | undefined;\n\t\tconst members = (isShort ? heritageClausesOrMembers : membersOrUndefined) as TS.ClassElement[];\n\n\t\treturn typescript4Cast.updateClassDeclaration(\n\t\t\tnode as never,\n\t\t\tdecorators as never,\n\t\t\tmodifiers as never,\n\t\t\tname as never,\n\t\t\ttypeParameters as never,\n\t\t\theritageClauses as never,\n\t\t\tmembers as never\n\t\t) as unknown as TS.ClassDeclaration;\n\t}\n\n\tfunction createInterfaceDeclaration(\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.Identifier,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\tmembers: readonly TS.TypeElement[]\n\t): TS.InterfaceDeclaration;\n\tfunction createInterfaceDeclaration(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.Identifier,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\tmembers: readonly TS.TypeElement[]\n\t): TS.InterfaceDeclaration;\n\tfunction createInterfaceDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttypeParametersOrHeritageClauses: readonly TS.TypeParameterDeclaration[] | readonly TS.HeritageClause[] | undefined,\n\t\theritageClausesOrMembers: readonly TS.HeritageClause[] | readonly TS.TypeElement[] | undefined,\n\t\tmembersOrUndefined?: readonly TS.TypeElement[]\n\t): TS.InterfaceDeclaration {\n\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrHeritageClauses) as readonly TS.TypeParameterDeclaration[];\n\t\tconst heritageClauses = (isShort ? typeParametersOrHeritageClauses : heritageClausesOrMembers) as readonly TS.HeritageClause[] | undefined;\n\t\tconst members = (isShort ? heritageClausesOrMembers : membersOrUndefined) as TS.TypeElement[];\n\n\t\treturn typescript4Cast.createInterfaceDeclaration(\n\t\t\tdecorators as never,\n\t\t\tmodifiers as never,\n\t\t\tname as never,\n\t\t\ttypeParameters as never,\n\t\t\theritageClauses as never,\n\t\t\tmembers as never\n\t\t) as unknown as TS.InterfaceDeclaration;\n\t}\n\n\tfunction updateInterfaceDeclaration(\n\t\tnode: TS.InterfaceDeclaration,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.Identifier,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\tmembers: readonly TS.TypeElement[]\n\t): TS.InterfaceDeclaration;\n\tfunction updateInterfaceDeclaration(\n\t\tnode: TS.InterfaceDeclaration,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.Identifier,\n\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\theritageClauses: readonly TS.HeritageClause[] | undefined,\n\t\tmembers: readonly TS.TypeElement[]\n\t): TS.InterfaceDeclaration;\n\tfunction updateInterfaceDeclaration(\n\t\tnode: TS.InterfaceDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\tnameOrTypeParameters: string | TS.Identifier | readonly TS.TypeParameterDeclaration[] | undefined,\n\t\ttypeParametersOrHeritageClauses: readonly TS.TypeParameterDeclaration[] | readonly TS.HeritageClause[] | undefined,\n\t\theritageClausesOrMembers: readonly TS.HeritageClause[] | readonly TS.TypeElement[] | undefined,\n\t\tmembersOrUndefined?: readonly TS.TypeElement[]\n\t): TS.InterfaceDeclaration {\n\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrTypeParameters) as string | TS.Identifier;\n\t\tconst typeParameters = (isShort ? nameOrTypeParameters : typeParametersOrHeritageClauses) as readonly TS.TypeParameterDeclaration[];\n\t\tconst heritageClauses = (isShort ? typeParametersOrHeritageClauses : heritageClausesOrMembers) as readonly TS.HeritageClause[] | undefined;\n\t\tconst members = (isShort ? heritageClausesOrMembers : membersOrUndefined) as TS.TypeElement[];\n\n\t\treturn typescript4Cast.updateInterfaceDeclaration(\n\t\t\tnode as never,\n\t\t\tdecorators as never,\n\t\t\tmodifiers as never,\n\t\t\tname as never,\n\t\t\ttypeParameters as never,\n\t\t\theritageClauses as never,\n\t\t\tmembers as never\n\t\t) as unknown as TS.InterfaceDeclaration;\n\t}\n\n\tfunction createEnumDeclaration(modifiers: readonly TS.Modifier[] | undefined, name: string | TS.Identifier, members: readonly TS.EnumMember[]): TS.EnumDeclaration;\n\tfunction createEnumDeclaration(\n\t\tdecorators: readonly TS.Decorator[],\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.Identifier,\n\t\tmembers: readonly TS.EnumMember[]\n\t): TS.EnumDeclaration;\n\tfunction createEnumDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\tnameOrMembers: string | TS.Identifier | readonly TS.EnumMember[],\n\t\tmembersOrUndefined?: readonly TS.EnumMember[]\n\t): TS.EnumDeclaration {\n\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrMembers) as string | TS.Identifier;\n\t\tconst members = (isShort ? nameOrMembers : membersOrUndefined) as readonly TS.EnumMember[];\n\n\t\treturn typescript4Cast.createEnumDeclaration(decorators as never, modifiers as never, name as never, members as never) as unknown as TS.EnumDeclaration;\n\t}\n\n\tfunction updateEnumDeclaration(\n\t\tnode: TS.EnumDeclaration,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.Identifier,\n\t\tmembers: readonly TS.EnumMember[]\n\t): TS.EnumDeclaration;\n\tfunction updateEnumDeclaration(\n\t\tnode: TS.EnumDeclaration,\n\t\tdecorators: readonly TS.Decorator[],\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.Identifier,\n\t\tmembers: readonly TS.EnumMember[]\n\t): TS.EnumDeclaration;\n\tfunction updateEnumDeclaration(\n\t\tnode: TS.EnumDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\tnameOrMembers: string | TS.Identifier | readonly TS.EnumMember[],\n\t\tmembersOrUndefined?: readonly TS.EnumMember[]\n\t): TS.EnumDeclaration {\n\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrMembers) as string | TS.Identifier;\n\t\tconst members = (isShort ? nameOrMembers : membersOrUndefined) as readonly TS.EnumMember[];\n\n\t\treturn typescript4Cast.updateEnumDeclaration(node as never, decorators as never, modifiers as never, name as never, members as never) as unknown as TS.EnumDeclaration;\n\t}\n\n\tfunction createModuleDeclaration(modifiers: readonly TS.Modifier[] | undefined, name: TS.ModuleName, body: TS.ModuleBody | undefined, flags?: TS.NodeFlags): TS.ModuleDeclaration;\n\tfunction createModuleDeclaration(\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: TS.ModuleName,\n\t\tbody: TS.ModuleBody | undefined,\n\t\tflags?: TS.NodeFlags\n\t): TS.ModuleDeclaration;\n\tfunction createModuleDeclaration(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | TS.ModuleName | undefined,\n\t\tnameOrBody: TS.ModuleName | TS.ModuleBody | undefined,\n\t\tbodyOrFlags: TS.ModuleBody | TS.NodeFlags | undefined,\n\t\tflagsOrUndefined?: TS.NodeFlags\n\t): TS.ModuleDeclaration {\n\t\tconst isShort =\n\t\t\ttypeof modifiersOrName === \"string\" ||\n\t\t\t(modifiersOrName != null &&\n\t\t\t\t!Array.isArray(modifiersOrName) &&\n\t\t\t\t(\"escapedText\" in modifiersOrName /* Identifier */ || \"_literalExpressionBrand\" in modifiersOrName)); /* StringLiteral */\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrBody) as TS.ModuleName;\n\t\tconst body = (isShort ? nameOrBody : bodyOrFlags) as TS.ModuleBody | undefined;\n\t\tconst flags = (isShort ? bodyOrFlags : flagsOrUndefined) as TS.NodeFlags | undefined;\n\n\t\treturn typescript4Cast.createModuleDeclaration(decorators as never, modifiers as never, name as never, body as never, flags as never) as unknown as TS.ModuleDeclaration;\n\t}\n\n\tfunction updateModuleDeclaration(\n\t\tnode: TS.ModuleDeclaration,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: TS.ModuleName,\n\t\tbody: TS.ModuleBody | undefined\n\t): TS.ModuleDeclaration;\n\tfunction updateModuleDeclaration(\n\t\tnode: TS.ModuleDeclaration,\n\t\tdecorators: readonly TS.Decorator[] | undefined,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: TS.ModuleName,\n\t\tbody: TS.ModuleBody | undefined\n\t): TS.ModuleDeclaration;\n\tfunction updateModuleDeclaration(\n\t\tnode: TS.ModuleDeclaration,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrName: readonly TS.Modifier[] | TS.ModuleName | undefined,\n\t\tnameOrBody: TS.ModuleName | TS.ModuleBody | undefined,\n\t\tbodyOrUndefined?: TS.ModuleBody\n\t): TS.ModuleDeclaration {\n\t\tconst isShort =\n\t\t\ttypeof modifiersOrName === \"string\" ||\n\t\t\t(modifiersOrName != null &&\n\t\t\t\t!Array.isArray(modifiersOrName) &&\n\t\t\t\t(\"escapedText\" in modifiersOrName /* Identifier */ || \"_literalExpressionBrand\" in modifiersOrName)); /* StringLiteral */\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrName as readonly TS.Modifier[]);\n\t\tconst name = (isShort ? modifiersOrName : nameOrBody) as TS.ModuleName;\n\t\tconst body = (isShort ? nameOrBody : bodyOrUndefined) as TS.ModuleBody | undefined;\n\n\t\treturn typescript4Cast.updateModuleDeclaration(node as never, decorators as never, modifiers as never, name as never, body as never) as unknown as TS.ModuleDeclaration;\n\t}\n\n\tfunction createExportAssignment(modifiers: readonly TS.Modifier[] | undefined, isExportEquals: boolean | undefined, expression: TS.Expression): TS.ExportAssignment;\n\tfunction createExportAssignment(\n\t\tdecorators: readonly TS.Decorator[],\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tisExportEquals: boolean | undefined,\n\t\texpression: TS.Expression\n\t): TS.ExportAssignment;\n\tfunction createExportAssignment(\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrIsExportEquals: readonly TS.Modifier[] | boolean | undefined,\n\t\tisExportEqualsOrExpression: boolean | TS.Expression | undefined,\n\t\texpressionOrUndefined?: TS.Expression\n\t): TS.ExportAssignment {\n\t\tconst isShort = arguments.length <= 3;\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrIsExportEquals as readonly TS.Modifier[]);\n\t\tconst isExportEquals = (isShort ? modifiersOrIsExportEquals : isExportEqualsOrExpression) as boolean;\n\t\tconst expression = (isShort ? isExportEqualsOrExpression : expressionOrUndefined) as TS.Expression;\n\n\t\treturn typescript4Cast.createExportAssignment(decorators as never, modifiers as never, isExportEquals as never, expression as never) as unknown as TS.ExportAssignment;\n\t}\n\n\tfunction updateExportAssignment(node: TS.ExportAssignment, modifiers: readonly TS.Modifier[] | undefined, expression: TS.Expression): TS.ExportAssignment;\n\tfunction updateExportAssignment(\n\t\tnode: TS.ExportAssignment,\n\t\tdecorators: readonly TS.Decorator[],\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\texpression: TS.Expression\n\t): TS.ExportAssignment;\n\tfunction updateExportAssignment(\n\t\tnode: TS.ExportAssignment,\n\t\tdecoratorsOrModifiers: readonly TS.Decorator[] | readonly TS.Modifier[] | undefined,\n\t\tmodifiersOrExpression: readonly TS.Modifier[] | TS.Expression | undefined,\n\t\texpressionOrUndefined?: TS.Expression\n\t): TS.ExportAssignment {\n\t\tconst isShort = arguments.length <= 3;\n\t\tconst decorators = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[0] : (decoratorsOrModifiers as readonly TS.Decorator[]);\n\t\tconst modifiers = isShort ? splitDecoratorsAndModifiers(decoratorsOrModifiers as readonly TS.ModifierLike[])[1] : (modifiersOrExpression as readonly TS.Modifier[]);\n\t\tconst expression = (isShort ? modifiersOrExpression : expressionOrUndefined) as TS.Expression;\n\n\t\treturn typescript4Cast.updateExportAssignment(node as never, decorators as never, modifiers as never, expression as never) as unknown as TS.ExportAssignment;\n\t}\n\n\tfunction createTypeParameterDeclaration(name: string | TS.Identifier, constraint?: TS.TypeNode, defaultType?: TS.TypeNode): TS.TypeParameterDeclaration;\n\tfunction createTypeParameterDeclaration(\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: string | TS.Identifier,\n\t\tconstraint?: TS.TypeNode,\n\t\tdefaultType?: TS.TypeNode\n\t): TS.TypeParameterDeclaration;\n\tfunction createTypeParameterDeclaration(\n\t\tmodifiersOrName: readonly TS.Modifier[] | string | TS.Identifier | undefined,\n\t\tnameOrConstraint?: string | TS.Identifier | TS.TypeNode,\n\t\tconstraintOrDefaultType?: TS.TypeNode,\n\t\tdefaultTypeOrUndefined?: TS.TypeNode\n\t): TS.TypeParameterDeclaration {\n\t\tconst isShort = typeof modifiersOrName === \"string\" || (modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName); /* Identifier */\n\t\tconst modifiers = (isShort ? undefined : modifiersOrName) as TS.Modifier[] | undefined;\n\t\tconst name = (isShort ? modifiersOrName : nameOrConstraint) as string | TS.Identifier;\n\t\tconst constraint = (isShort ? nameOrConstraint : constraintOrDefaultType) as TS.TypeNode | undefined;\n\t\tconst defaultType = (isShort ? constraintOrDefaultType : defaultTypeOrUndefined) as TS.TypeNode | undefined;\n\n\t\tconst typeParameterDeclaration = typescript4Cast.createTypeParameterDeclaration(\n\t\t\tname as never,\n\t\t\tconstraint as never,\n\t\t\tdefaultType as never\n\t\t) as unknown as TS.TypeParameterDeclaration;\n\t\tif (modifiers != null) {\n\t\t\t(typeParameterDeclaration as unknown as Mutable<TS.TypeParameterDeclaration>).modifiers = typescript4Cast.createNodeArray(modifiers as never) as never;\n\t\t}\n\n\t\treturn typeParameterDeclaration;\n\t}\n\n\tfunction updateTypeParameterDeclaration(node: TS.TypeParameterDeclaration, name: TS.Identifier, constraint?: TS.TypeNode, defaultType?: TS.TypeNode): TS.TypeParameterDeclaration;\n\tfunction updateTypeParameterDeclaration(\n\t\tnode: TS.TypeParameterDeclaration,\n\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\tname: TS.Identifier,\n\t\tconstraint?: TS.TypeNode,\n\t\tdefaultType?: TS.TypeNode\n\t): TS.TypeParameterDeclaration;\n\tfunction updateTypeParameterDeclaration(\n\t\tnode: TS.TypeParameterDeclaration,\n\t\tmodifiersOrName: readonly TS.Modifier[] | TS.Identifier | undefined,\n\t\tnameOrConstraint?: TS.Identifier | TS.TypeNode,\n\t\tconstraintOrDefaultType?: TS.TypeNode,\n\t\tdefaultTypeOrUndefined?: TS.TypeNode\n\t): TS.TypeParameterDeclaration {\n\t\tconst isShort = modifiersOrName != null && !Array.isArray(modifiersOrName) && \"escapedText\" in modifiersOrName; /* Identifier */\n\t\tconst modifiers = (isShort ? undefined : modifiersOrName) as TS.Modifier[] | undefined;\n\t\tconst name = (isShort ? modifiersOrName : nameOrConstraint) as TS.Identifier;\n\t\tconst constraint = (isShort ? nameOrConstraint : constraintOrDefaultType) as TS.TypeNode | undefined;\n\t\tconst defaultType = (isShort ? constraintOrDefaultType : defaultTypeOrUndefined) as TS.TypeNode | undefined;\n\n\t\tconst typeParameterDeclaration = typescript4Cast.updateTypeParameterDeclaration(\n\t\t\tnode as never,\n\t\t\tname as never,\n\t\t\tconstraint as never,\n\t\t\tdefaultType as never\n\t\t) as unknown as TS.TypeParameterDeclaration;\n\t\tif (modifiers != null) {\n\t\t\t(typeParameterDeclaration as unknown as Mutable<TS.TypeParameterDeclaration>).modifiers = typescript4Cast.createNodeArray(modifiers as never) as never;\n\t\t}\n\n\t\treturn typeParameterDeclaration;\n\t}\n\n\tconst {updateSourceFileNode, ...common} = typescript as typeof typescript & Record<keyof Omit<typeof typescript4Cast, keyof typeof typescript>, never>;\n\n\treturn {\n\t\t[\"__compatUpgraded\" as never]: true,\n\t\t...common,\n\n\t\tcreateToken: createToken as never,\n\t\tcreateConstructorTypeNode,\n\t\tupdateConstructorTypeNode,\n\t\tcreateImportTypeNode,\n\t\tupdateImportTypeNode,\n\t\tcreateJSDocComment,\n\t\tcreateJSDocParameterTag,\n\t\tcreateJSDocPrivateTag,\n\t\tcreateJSDocAugmentsTag,\n\t\tcreateJSDocAuthorTag,\n\t\tcreateJSDocCallbackTag,\n\t\tcreateJSDocClassTag,\n\t\tcreateJSDocEnumTag,\n\t\tcreateJSDocImplementsTag,\n\t\tcreateJSDocPropertyTag,\n\t\tcreateJSDocProtectedTag,\n\t\tcreateJSDocPublicTag,\n\t\tcreateJSDocReadonlyTag,\n\t\tcreateJSDocReturnTag,\n\t\tcreateJSDocSignature,\n\t\tcreateJSDocTemplateTag,\n\t\tcreateJSDocThisTag,\n\t\tcreateJSDocTypeExpression,\n\t\tcreateJSDocTypeLiteral,\n\t\tcreateJSDocTypeTag,\n\t\tcreateJSDocTypedefTag,\n\t\tcreateJSDocAllType,\n\t\tcreateJSDocDeprecatedTag,\n\t\tcreateJSDocFunctionType,\n\t\tcreateJSDocLink,\n\t\tcreateJSDocNameReference,\n\t\tcreateJSDocNamepathType,\n\t\tcreateJSDocNonNullableType,\n\t\tcreateJSDocNullableType,\n\t\tcreateJSDocOptionalType,\n\t\tcreateJSDocOverrideTag,\n\t\tcreateJSDocSeeTag,\n\t\tcreateJSDocText,\n\t\tcreateJSDocUnknownTag,\n\t\tcreateJSDocUnknownType,\n\t\tcreateJSDocVariadicType,\n\t\tcreateJSDocMemberName,\n\t\tcreateJSDocLinkCode,\n\t\tcreateJSDocLinkPlain,\n\t\tcreateJSDocOverloadTag,\n\t\tcreateJSDocThrowsTag,\n\t\tcreateJSDocSatisfiesTag,\n\t\tcreateJSDocImportTag,\n\t\tcreateTemplateLiteralType,\n\t\tcreateTemplateLiteralTypeSpan,\n\t\tcreateClassStaticBlockDeclaration,\n\t\tcreateAssertClause,\n\t\tcreateAssertEntry,\n\t\tcreateImportTypeAssertionContainer,\n\t\tcreateImportAttributes,\n\t\tcreateImportAttribute,\n\t\tcreateJsxNamespacedName,\n\t\tcreateIndexSignature,\n\t\tupdateIndexSignature,\n\t\tcreateSatisfiesExpression,\n\t\tupdateSatisfiesExpression,\n\t\tcreateImportDeclaration,\n\t\tupdateImportDeclaration,\n\t\tcreateUniquePrivateName,\n\t\tcreatePrivateIdentifier,\n\t\tgetGeneratedPrivateNameForNode,\n\t\tcreateTypeAliasDeclaration,\n\t\tupdateTypeAliasDeclaration,\n\t\tcreateFunctionDeclaration,\n\t\tupdateFunctionDeclaration,\n\t\tcreateClassDeclaration,\n\t\tupdateClassDeclaration,\n\t\tcreateInterfaceDeclaration,\n\t\tupdateInterfaceDeclaration,\n\t\tcreateEnumDeclaration,\n\t\tupdateEnumDeclaration,\n\t\tcreateModuleDeclaration,\n\t\tupdateModuleDeclaration,\n\t\tcreateExportAssignment,\n\t\tupdateExportAssignment,\n\t\tcreateTypeParameterDeclaration,\n\t\tupdateTypeParameterDeclaration,\n\n\t\tcreateComma(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createComma(left as never, right as never) as unknown as TS.BinaryExpression;\n\t\t},\n\t\tcreateAssignment(left: TS.ObjectLiteralExpression | TS.ArrayLiteralExpression, right: TS.Expression): TS.DestructuringAssignment {\n\t\t\treturn typescript4Cast.createAssignment(left as never, right as never) as unknown as TS.DestructuringAssignment;\n\t\t},\n\t\tcreateLessThan(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createLessThan(left as never, right as never) as unknown as TS.BinaryExpression;\n\t\t},\n\t\tcreateSourceFile(statements: readonly TS.Statement[], endOfFileToken: TS.EndOfFileToken, flags: TS.NodeFlags): TS.SourceFile {\n\t\t\tconst sourceFile = typescript.createSourceFile(\"\", \"\", 0, undefined, 0) as unknown as Mutable<TS.SourceFile>;\n\t\t\tsourceFile.endOfFileToken = endOfFileToken;\n\t\t\tsourceFile.flags |= flags;\n\t\t\tsourceFile.statements = typescript4Cast.createNodeArray(statements as never) as never;\n\t\t\treturn sourceFile;\n\t\t},\n\t\tcreateClassExpression,\n\t\tcreateExpressionWithTypeArguments(expression: TS.Expression, typeArguments: readonly TS.TypeNode[] | undefined): TS.ExpressionWithTypeArguments {\n\t\t\treturn typescript4Cast.createExpressionWithTypeArguments(typeArguments as never, expression as never) as never;\n\t\t},\n\t\tupdateExpressionWithTypeArguments(\n\t\t\tnode: TS.ExpressionWithTypeArguments,\n\t\t\texpression: TS.Expression,\n\t\t\ttypeArguments: readonly TS.TypeNode[] | undefined\n\t\t): TS.ExpressionWithTypeArguments {\n\t\t\treturn typescript4Cast.updateExpressionWithTypeArguments(node as never, typeArguments as never, expression as never) as never;\n\t\t},\n\t\tupdateImportClause(node: TS.ImportClause, isTypeOnly: boolean, name: TS.Identifier | undefined, namedBindings: TS.NamedImportBindings | undefined): TS.ImportClause {\n\t\t\treturn typescript4Cast.updateImportClause(node as never, name as never, namedBindings as never, isTypeOnly as never) as never;\n\t\t},\n\t\tupdateExportDeclaration,\n\t\tcreateTypePredicateNode(\n\t\t\tassertsModifier: TS.AssertsKeyword | undefined,\n\t\t\tparameterName: TS.Identifier | TS.ThisTypeNode | string,\n\t\t\ttype: TS.TypeNode | undefined\n\t\t): TS.TypePredicateNode {\n\t\t\treturn typescript4Cast.createTypePredicateNode(parameterName as never, type as never) as never;\n\t\t},\n\t\tupdateTypePredicateNode(\n\t\t\tnode: TS.TypePredicateNode,\n\t\t\tassertsModifier: TS.AssertsKeyword | undefined,\n\t\t\tparameterName: TS.Identifier | TS.ThisTypeNode,\n\t\t\ttype: TS.TypeNode | undefined\n\t\t): TS.TypePredicateNode {\n\t\t\treturn typescript4Cast.updateTypePredicateNode(node as never, parameterName as never, type as never) as never;\n\t\t},\n\t\tcreateMethodSignature(\n\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\tname: string | TS.PropertyName,\n\t\t\tquestionToken: TS.QuestionToken | undefined,\n\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[] | undefined,\n\t\t\tparameters: readonly TS.ParameterDeclaration[],\n\t\t\ttype: TS.TypeNode | undefined\n\t\t): TS.MethodSignature {\n\t\t\tconst methodSignature = typescript4Cast.createMethodSignature(\n\t\t\t\ttypeParameters as never,\n\t\t\t\tparameters as never,\n\t\t\t\ttype as never,\n\t\t\t\tname as never,\n\t\t\t\tquestionToken as never\n\t\t\t) as unknown as Mutable<TS.MethodSignature>;\n\n\t\t\t// Also set the modifiers\n\t\t\t// Workaround for: https://github.com/microsoft/TypeScript/issues/35959\n\t\t\tif (modifiers != null) {\n\t\t\t\tmethodSignature.modifiers = typescript4Cast.createNodeArray(modifiers as never) as never;\n\t\t\t}\n\t\t\treturn methodSignature;\n\t\t},\n\t\tupdateMethodSignature(\n\t\t\tnode: TS.MethodSignature,\n\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\tname: TS.PropertyName,\n\t\t\tquestionToken: TS.QuestionToken | undefined,\n\t\t\ttypeParameters: TS.NodeArray<TS.TypeParameterDeclaration> | undefined,\n\t\t\tparameters: TS.NodeArray<TS.ParameterDeclaration>,\n\t\t\ttype: TS.TypeNode | undefined\n\t\t): TS.MethodSignature {\n\t\t\tconst methodSignature = typescript4Cast.updateMethodSignature(\n\t\t\t\tnode as never,\n\t\t\t\ttypeParameters as never,\n\t\t\t\tparameters as never,\n\t\t\t\ttype as never,\n\t\t\t\tname as never,\n\t\t\t\tquestionToken as never\n\t\t\t) as unknown as Mutable<TS.MethodSignature>;\n\n\t\t\t// Also set the modifiers\n\t\t\t// Workaround for: https://github.com/microsoft/TypeScript/issues/35959\n\t\t\tif (modifiers !== methodSignature.modifiers) {\n\t\t\t\tmethodSignature.modifiers = modifiers == null ? modifiers : (typescript4Cast.createNodeArray(modifiers as never) as never);\n\t\t\t}\n\t\t\treturn methodSignature;\n\t\t},\n\t\tupdatePropertySignature(\n\t\t\tnode: TS.PropertySignature,\n\t\t\tmodifiers: readonly TS.Modifier[] | undefined,\n\t\t\tname: TS.PropertyName,\n\t\t\tquestionToken: TS.QuestionToken | undefined,\n\t\t\ttype: TS.TypeNode | undefined\n\t\t): TS.PropertySignature {\n\t\t\treturn typescript4Cast.updatePropertySignature(node as never, modifiers as never, name as never, questionToken as never, type as never, undefined as never) as never;\n\t\t},\n\t\tcreateAwaitExpression(expression: TS.Expression): TS.AwaitExpression {\n\t\t\treturn typescript4Cast.createAwait(expression as never) as never;\n\t\t},\n\t\tcreateBinaryExpression(left: TS.Expression, operator: TS.BinaryOperator | TS.BinaryOperatorToken, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, operator as never, right as never) as never;\n\t\t},\n\t\tcreateBitwiseAnd(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, typescript.SyntaxKind.AmpersandToken as never, right as never) as never;\n\t\t},\n\t\tcreateBitwiseNot(operand: TS.Expression): TS.PrefixUnaryExpression {\n\t\t\treturn typescript4Cast.createPrefix(typescript.SyntaxKind.TildeToken as never, operand as never) as never;\n\t\t},\n\t\tcreateBitwiseOr(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, typescript.SyntaxKind.BarToken as never, right as never) as never;\n\t\t},\n\t\tcreateBitwiseXor(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, typescript.SyntaxKind.CaretToken as never, right as never) as never;\n\t\t},\n\t\tcreateBreakStatement(label?: string | TS.Identifier): TS.BreakStatement {\n\t\t\treturn typescript4Cast.createBreak(label as never) as never;\n\t\t},\n\t\tcreateCommaListExpression(elements: readonly TS.Expression[]): TS.CommaListExpression {\n\t\t\treturn typescript4Cast.createCommaList(elements as never) as never;\n\t\t},\n\t\tcreateConditionalExpression(\n\t\t\tcondition: TS.Expression,\n\t\t\tquestionToken: TS.QuestionToken | undefined,\n\t\t\twhenTrue: TS.Expression,\n\t\t\tcolonToken: TS.ColonToken | undefined,\n\t\t\twhenFalse: TS.Expression\n\t\t): TS.ConditionalExpression {\n\t\t\tif (questionToken == null || colonToken == null) {\n\t\t\t\treturn typescript4Cast.createConditional(condition as never, whenTrue as never, whenFalse as never) as never;\n\t\t\t}\n\t\t\treturn typescript4Cast.createConditional(condition as never, questionToken as never, whenTrue as never, colonToken as never, whenFalse as never) as never;\n\t\t},\n\t\tcreateConstructorDeclaration,\n\t\tcreateContinueStatement(label?: string | TS.Identifier): TS.ContinueStatement {\n\t\t\treturn typescript4Cast.createContinue(label as never) as never;\n\t\t},\n\t\tcreateDeleteExpression(expression: TS.Expression): TS.DeleteExpression {\n\t\t\treturn typescript4Cast.createDelete(expression as never) as never;\n\t\t},\n\t\tcreateDivide(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, typescript.SyntaxKind.SlashToken as never, right as never) as never;\n\t\t},\n\t\tcreateDoStatement(statement: TS.Statement, expression: TS.Expression): TS.DoStatement {\n\t\t\treturn typescript4Cast.createDo(statement as never, expression as never) as never;\n\t\t},\n\t\tcreateElementAccessExpression(expression: TS.Expression, index: number | TS.Expression): TS.ElementAccessExpression {\n\t\t\treturn typescript4Cast.createElementAccess(expression as never, index as never) as never;\n\t\t},\n\t\tcreateEquality(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, typescript.SyntaxKind.EqualsEqualsToken as never, right as never) as never;\n\t\t},\n\t\tcreateExponent(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, typescript.SyntaxKind.AsteriskAsteriskToken as never, right as never) as never;\n\t\t},\n\t\tcreateForInStatement(initializer: TS.ForInitializer, expression: TS.Expression, statement: TS.Statement): TS.ForInStatement {\n\t\t\treturn typescript4Cast.createForIn(initializer as never, expression as never, statement as never) as never;\n\t\t},\n\t\tcreateForOfStatement(awaitModifier: TS.AwaitKeyword | undefined, initializer: TS.ForInitializer, expression: TS.Expression, statement: TS.Statement): TS.ForOfStatement {\n\t\t\treturn typescript4Cast.createForOf(awaitModifier as never, initializer as never, expression as never, statement as never) as never;\n\t\t},\n\t\tcreateForStatement(\n\t\t\tinitializer: TS.ForInitializer | undefined,\n\t\t\tcondition: TS.Expression | undefined,\n\t\t\tincrementor: TS.Expression | undefined,\n\t\t\tstatement: TS.Statement\n\t\t): TS.ForStatement {\n\t\t\treturn typescript4Cast.createFor(initializer as never, condition as never, incrementor as never, statement as never) as never;\n\t\t},\n\t\tcreateGreaterThan(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, typescript.SyntaxKind.GreaterThanToken as never, right as never) as never;\n\t\t},\n\t\tcreateGreaterThanEquals(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, typescript.SyntaxKind.GreaterThanEqualsToken as never, right as never) as never;\n\t\t},\n\t\tcreateIfStatement(expression: TS.Expression, thenStatement: TS.Statement, elseStatement?: TS.Statement): TS.IfStatement {\n\t\t\treturn typescript4Cast.createIf(expression as never, thenStatement as never, elseStatement as never) as never;\n\t\t},\n\t\tcreateInequality(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, typescript.SyntaxKind.ExclamationEqualsToken as never, right as never) as never;\n\t\t},\n\t\tcreateLabeledStatement(label: string | TS.Identifier, statement: TS.Statement): TS.LabeledStatement {\n\t\t\treturn typescript4Cast.createLabel(label as never, statement as never) as never;\n\t\t},\n\t\tcreateLeftShift(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, typescript.SyntaxKind.LessThanLessThanToken as never, right as never) as never;\n\t\t},\n\t\tcreateLessThanEquals(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, typescript.SyntaxKind.LessThanEqualsToken as never, right as never) as never;\n\t\t},\n\t\tcreateMethodDeclaration,\n\t\tcreateModulo(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, typescript.SyntaxKind.PercentToken as never, right as never) as never;\n\t\t},\n\t\tcreateMultiply(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, typescript.SyntaxKind.AsteriskToken as never, right as never) as never;\n\t\t},\n\t\tcreateNamedTupleMember,\n\t\tcreateNewExpression(expression: TS.Expression, typeArguments: readonly TS.TypeNode[] | undefined, argumentsArray: readonly TS.Expression[] | undefined): TS.NewExpression {\n\t\t\treturn typescript4Cast.createNew(expression as never, typeArguments as never, argumentsArray as never) as never;\n\t\t},\n\t\tcreateParameterDeclaration,\n\t\tcreateParenthesizedExpression(expression: TS.Expression): TS.ParenthesizedExpression {\n\t\t\treturn typescript4Cast.createParen(expression as never) as never;\n\t\t},\n\t\tcreatePostfixDecrement(operand: TS.Expression): TS.PostfixUnaryExpression {\n\t\t\treturn typescript4Cast.createPostfix(operand as never, typescript.SyntaxKind.MinusMinusToken as never) as never;\n\t\t},\n\t\tcreatePostfixUnaryExpression(operand: TS.Expression, operator: TS.PostfixUnaryOperator): TS.PostfixUnaryExpression {\n\t\t\treturn typescript4Cast.createPostfix(operand as never, operator as never) as never;\n\t\t},\n\t\tcreatePrefixDecrement(operand: TS.Expression): TS.PrefixUnaryExpression {\n\t\t\treturn typescript4Cast.createPrefix(typescript.SyntaxKind.MinusMinusToken as never, operand as never) as never;\n\t\t},\n\t\tcreatePrefixIncrement(operand: TS.Expression): TS.PrefixUnaryExpression {\n\t\t\treturn typescript4Cast.createPrefix(typescript.SyntaxKind.PlusPlusToken as never, operand as never) as never;\n\t\t},\n\t\tcreatePrefixMinus(operand: TS.Expression): TS.PrefixUnaryExpression {\n\t\t\treturn typescript4Cast.createPrefix(typescript.SyntaxKind.MinusToken as never, operand as never) as never;\n\t\t},\n\t\tcreatePrefixPlus(operand: TS.Expression): TS.PrefixUnaryExpression {\n\t\t\treturn typescript4Cast.createPrefix(typescript.SyntaxKind.PlusToken as never, operand as never) as never;\n\t\t},\n\t\tcreatePrefixUnaryExpression(operator: TS.PrefixUnaryOperator, operand: TS.Expression): TS.PrefixUnaryExpression {\n\t\t\treturn typescript4Cast.createPrefix(operator as never, operand as never) as never;\n\t\t},\n\t\tcreatePropertyDeclaration,\n\t\tcreateRightShift(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, typescript.SyntaxKind.GreaterThanGreaterThanToken as never, right as never) as never;\n\t\t},\n\t\tcreateSetAccessorDeclaration,\n\t\tcreateSpreadElement(expression: TS.Expression): TS.SpreadElement {\n\t\t\treturn typescript4Cast.createSpread(expression as never) as never;\n\t\t},\n\t\tcreateSwitchStatement(expression: TS.Expression, caseBlock: TS.CaseBlock): TS.SwitchStatement {\n\t\t\treturn typescript4Cast.createSwitch(expression as never, caseBlock as never) as never;\n\t\t},\n\t\tcreateTaggedTemplateExpression(tag: TS.Expression, typeArguments: readonly TS.TypeNode[] | undefined, template: TS.TemplateLiteral): TS.TaggedTemplateExpression {\n\t\t\treturn typescript4Cast.createTaggedTemplate(tag as never, typeArguments as never, template as never) as never;\n\t\t},\n\t\tcreateThrowStatement(expression: TS.Expression): TS.ThrowStatement {\n\t\t\treturn typescript4Cast.createThrow(expression as never) as never;\n\t\t},\n\t\tcreateTryStatement(tryBlock: TS.Block, catchClause: TS.CatchClause | undefined, finallyBlock: TS.Block | undefined): TS.TryStatement {\n\t\t\treturn typescript4Cast.createTry(tryBlock as never, catchClause as never, finallyBlock as never) as never;\n\t\t},\n\t\tcreateTypeOfExpression(expression: TS.Expression): TS.TypeOfExpression {\n\t\t\treturn typescript4Cast.createTypeOf(expression as never) as never;\n\t\t},\n\t\tcreateUnsignedRightShift(left: TS.Expression, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.createBinary(left as never, typescript.SyntaxKind.GreaterThanGreaterThanGreaterThanToken as never, right as never) as never;\n\t\t},\n\t\tcreateVoidExpression(expression: TS.Expression): TS.VoidExpression {\n\t\t\treturn typescript4Cast.createVoid(expression as never) as never;\n\t\t},\n\t\tcreateWhileStatement(expression: TS.Expression, statement: TS.Statement): TS.WhileStatement {\n\t\t\treturn typescript4Cast.createWhile(expression as never, statement as never) as never;\n\t\t},\n\t\tcreateWithStatement(expression: TS.Expression, statement: TS.Statement): TS.WithStatement {\n\t\t\treturn typescript4Cast.createWith(expression as never, statement as never) as never;\n\t\t},\n\t\tcreateYieldExpression(asteriskToken: TS.AsteriskToken | undefined, expression: TS.Expression | undefined): TS.YieldExpression {\n\t\t\treturn typescript4Cast.createYield(asteriskToken as never, expression as never) as never;\n\t\t},\n\t\trestoreOuterExpressions(outerExpression: TS.Expression | undefined, innerExpression: TS.Expression, kinds?: TS.OuterExpressionKinds): TS.Expression {\n\t\t\treturn innerExpression;\n\t\t},\n\t\tupdateAwaitExpression(node: TS.AwaitExpression, expression: TS.Expression): TS.AwaitExpression {\n\t\t\treturn typescript4Cast.updateAwait(node as never, expression as never) as never;\n\t\t},\n\t\tupdateBinaryExpression(node: TS.BinaryExpression, left: TS.Expression, operator: TS.BinaryOperator | TS.BinaryOperatorToken, right: TS.Expression): TS.BinaryExpression {\n\t\t\treturn typescript4Cast.updateBinary(node as never, left as never, right as never, operator as never) as never;\n\t\t},\n\t\tupdateBreakStatement(node: TS.BreakStatement, label: TS.Identifier | undefined): TS.BreakStatement {\n\t\t\treturn typescript4Cast.updateBreak(node as never, label as never) as never;\n\t\t},\n\t\tupdateCommaListExpression(node: TS.CommaListExpression, elements: readonly TS.Expression[]): TS.CommaListExpression {\n\t\t\treturn typescript4Cast.updateCommaList(node as never, elements as never) as never;\n\t\t},\n\t\tupdateConditionalExpression(\n\t\t\tnode: TS.ConditionalExpression,\n\t\t\tcondition: TS.Expression,\n\t\t\tquestionToken: TS.QuestionToken,\n\t\t\twhenTrue: TS.Expression,\n\t\t\tcolonToken: TS.ColonToken,\n\t\t\twhenFalse: TS.Expression\n\t\t): TS.ConditionalExpression {\n\t\t\treturn typescript4Cast.updateConditional(node as never, condition as never, questionToken as never, whenTrue as never, colonToken as never, whenFalse as never) as never;\n\t\t},\n\t\tupdateContinueStatement(node: TS.ContinueStatement, label: TS.Identifier | undefined): TS.ContinueStatement {\n\t\t\treturn typescript4Cast.updateContinue(node as never, label as never) as never;\n\t\t},\n\t\tupdateDeleteExpression(node: TS.DeleteExpression, expression: TS.Expression): TS.DeleteExpression {\n\t\t\treturn typescript4Cast.updateDelete(node as never, expression as never) as never;\n\t\t},\n\t\tupdateDoStatement(node: TS.DoStatement, statement: TS.Statement, expression: TS.Expression): TS.DoStatement {\n\t\t\treturn typescript4Cast.updateDo(node as never, statement as never, expression as never) as never;\n\t\t},\n\t\tupdateElementAccessExpression(node: TS.ElementAccessExpression, expression: TS.Expression, argumentExpression: TS.Expression): TS.ElementAccessExpression {\n\t\t\treturn typescript4Cast.updateElementAccess(node as never, expression as never, argumentExpression as never) as never;\n\t\t},\n\t\tupdateForInStatement(node: TS.ForInStatement, initializer: TS.ForInitializer, expression: TS.Expression, statement: TS.Statement): TS.ForInStatement {\n\t\t\treturn typescript4Cast.updateForIn(node as never, initializer as never, expression as never, statement as never) as never;\n\t\t},\n\t\tupdateForOfStatement(\n\t\t\tnode: TS.ForOfStatement,\n\t\t\tawaitModifier: TS.AwaitKeyword | undefined,\n\t\t\tinitializer: TS.ForInitializer,\n\t\t\texpression: TS.Expression,\n\t\t\tstatement: TS.Statement\n\t\t): TS.ForOfStatement {\n\t\t\treturn typescript4Cast.updateForOf(node as never, awaitModifier as never, initializer as never, expression as never, statement as never) as never;\n\t\t},\n\t\tupdateForStatement(\n\t\t\tnode: TS.ForStatement,\n\t\t\tinitializer: TS.ForInitializer | undefined,\n\t\t\tcondition: TS.Expression | undefined,\n\t\t\tincrementor: TS.Expression | undefined,\n\t\t\tstatement: TS.Statement\n\t\t): TS.ForStatement {\n\t\t\treturn typescript4Cast.updateFor(node as never, initializer as never, condition as never, incrementor as never, statement as never) as never;\n\t\t},\n\t\tupdateIfStatement(node: TS.IfStatement, expression: TS.Expression, thenStatement: TS.Statement, elseStatement: TS.Statement | undefined): TS.IfStatement {\n\t\t\treturn typescript4Cast.updateIf(node as never, expression as never, thenStatement as never, elseStatement as never) as never;\n\t\t},\n\t\tupdateJSDocAugmentsTag(\n\t\t\tnode: TS.JSDocAugmentsTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\tclassName: TS.JSDocAugmentsTag[\"class\"],\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined\n\t\t): TS.JSDocAugmentsTag {\n\t\t\treturn tagName === node.tagName && className === node.class && comment === node.comment\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocAugmentsTag(tagName, className, comment), node);\n\t\t},\n\t\tupdateJSDocAuthorTag(node: TS.JSDocAuthorTag, tagName: TS.Identifier | undefined, comment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined): TS.JSDocAuthorTag {\n\t\t\treturn tagName === node.tagName && comment === node.comment ? node : typescript.setTextRange(createJSDocAuthorTag(tagName, comment), node);\n\t\t},\n\t\tupdateJSDocCallbackTag(\n\t\t\tnode: TS.JSDocCallbackTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\ttypeExpression: TS.JSDocSignature,\n\t\t\tfullName: TS.Identifier | TS.JSDocNamespaceDeclaration | undefined,\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined\n\t\t): TS.JSDocCallbackTag {\n\t\t\treturn tagName === node.tagName && typeExpression === node.typeExpression && fullName === node.fullName && comment === node.comment\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocCallbackTag(tagName, typeExpression, fullName, comment), node);\n\t\t},\n\t\tupdateJSDocClassTag(node: TS.JSDocClassTag, tagName: TS.Identifier | undefined, comment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined): TS.JSDocClassTag {\n\t\t\treturn tagName === node.tagName && comment === node.comment ? node : typescript.setTextRange(createJSDocClassTag(tagName, comment), node);\n\t\t},\n\t\tupdateJSDocComment(node: TS.JSDoc, comment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined, tags: readonly TS.JSDocTag[] | undefined): TS.JSDoc {\n\t\t\treturn comment === node.comment && tags === node.tags ? node : typescript.setTextRange(createJSDocComment(comment, tags), node);\n\t\t},\n\t\tupdateJSDocDeprecatedTag(node: TS.JSDocDeprecatedTag, tagName: TS.Identifier, comment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>): TS.JSDocDeprecatedTag {\n\t\t\treturn tagName === node.tagName && comment === node.comment ? node : typescript.setTextRange(createJSDocDeprecatedTag(tagName, comment), node);\n\t\t},\n\t\tupdateJSDocEnumTag(\n\t\t\tnode: TS.JSDocEnumTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\ttypeExpression: TS.JSDocTypeExpression,\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined\n\t\t): TS.JSDocEnumTag {\n\t\t\treturn tagName === node.tagName && typeExpression === node.typeExpression ? node : typescript.setTextRange(createJSDocEnumTag(tagName, typeExpression, comment), node);\n\t\t},\n\t\tupdateJSDocFunctionType(node: TS.JSDocFunctionType, parameters: readonly TS.ParameterDeclaration[], type: TS.TypeNode | undefined): TS.JSDocFunctionType {\n\t\t\treturn parameters === node.parameters && type === node.type ? node : typescript.setTextRange(createJSDocFunctionType(parameters, type), node);\n\t\t},\n\t\tupdateJSDocImplementsTag(\n\t\t\tnode: TS.JSDocImplementsTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\tclassName: TS.JSDocImplementsTag[\"class\"],\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined\n\t\t): TS.JSDocImplementsTag {\n\t\t\treturn tagName === node.tagName && className === node.class && comment === node.comment\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocImplementsTag(tagName, className, comment), node);\n\t\t},\n\t\tupdateJSDocLink(node: TS.JSDocLink, name: TS.EntityName | undefined, text: string): TS.JSDocLink {\n\t\t\treturn name === node.name && text === node.text ? node : typescript.setTextRange(createJSDocLink(name, text), node);\n\t\t},\n\t\tupdateJSDocNameReference(node: TS.JSDocNameReference, name: TS.EntityName): TS.JSDocNameReference {\n\t\t\treturn name === node.name ? node : typescript.setTextRange(createJSDocNameReference(name), node);\n\t\t},\n\t\tupdateJSDocNamepathType(node: TS.JSDocNamepathType, type: TS.TypeNode): TS.JSDocNamepathType {\n\t\t\treturn type === node.type ? node : typescript.setTextRange(createJSDocNamepathType(type), node);\n\t\t},\n\t\tupdateJSDocNonNullableType(node: TS.JSDocNonNullableType, type: TS.TypeNode): TS.JSDocNonNullableType {\n\t\t\treturn type === node.type ? node : typescript.setTextRange(createJSDocNonNullableType(type), node);\n\t\t},\n\t\tupdateJSDocNullableType(node: TS.JSDocNullableType, type: TS.TypeNode): TS.JSDocNullableType {\n\t\t\treturn type === node.type ? node : typescript.setTextRange(createJSDocNullableType(type), node);\n\t\t},\n\t\tupdateJSDocOptionalType(node: TS.JSDocOptionalType, type: TS.TypeNode): TS.JSDocOptionalType {\n\t\t\treturn type === node.type ? node : typescript.setTextRange(createJSDocOptionalType(type), node);\n\t\t},\n\t\tupdateJSDocOverrideTag(node: TS.JSDocOverrideTag, tagName: TS.Identifier, comment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>): TS.JSDocOverrideTag {\n\t\t\treturn tagName === node.tagName && comment === node.comment ? node : typescript.setTextRange(createJSDocOverrideTag(tagName, comment), node);\n\t\t},\n\t\tupdateJSDocParameterTag(\n\t\t\tnode: TS.JSDocParameterTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\tname: TS.EntityName,\n\t\t\tisBracketed: boolean,\n\t\t\ttypeExpression: TS.JSDocTypeExpression | undefined,\n\t\t\tisNameFirst: boolean,\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined\n\t\t): TS.JSDocParameterTag {\n\t\t\treturn tagName === node.tagName &&\n\t\t\t\tname === node.name &&\n\t\t\t\tisBracketed === node.isBracketed &&\n\t\t\t\ttypeExpression === node.typeExpression &&\n\t\t\t\tisNameFirst === node.isNameFirst &&\n\t\t\t\tcomment === node.comment\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocParameterTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment), node);\n\t\t},\n\t\tupdateJSDocPrivateTag(\n\t\t\tnode: TS.JSDocPrivateTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined\n\t\t): TS.JSDocPrivateTag {\n\t\t\treturn tagName === node.tagName && comment === node.comment ? node : typescript.setTextRange(createJSDocPrivateTag(tagName, comment), node);\n\t\t},\n\t\tupdateJSDocPropertyTag(\n\t\t\tnode: TS.JSDocPropertyTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\tname: TS.EntityName,\n\t\t\tisBracketed: boolean,\n\t\t\ttypeExpression: TS.JSDocTypeExpression | undefined,\n\t\t\tisNameFirst: boolean,\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined\n\t\t): TS.JSDocPropertyTag {\n\t\t\treturn tagName === node.tagName &&\n\t\t\t\tname === node.name &&\n\t\t\t\tisBracketed === node.isBracketed &&\n\t\t\t\ttypeExpression === node.typeExpression &&\n\t\t\t\tisNameFirst === node.isNameFirst &&\n\t\t\t\tcomment === node.comment\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocPropertyTag(tagName, name, isBracketed, typeExpression, isNameFirst, comment), node);\n\t\t},\n\t\tupdateJSDocProtectedTag(\n\t\t\tnode: TS.JSDocProtectedTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined\n\t\t): TS.JSDocProtectedTag {\n\t\t\treturn tagName === node.tagName && comment === node.comment ? node : typescript.setTextRange(createJSDocProtectedTag(tagName, comment), node);\n\t\t},\n\t\tupdateJSDocPublicTag(node: TS.JSDocPublicTag, tagName: TS.Identifier | undefined, comment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined): TS.JSDocPublicTag {\n\t\t\treturn tagName === node.tagName && comment === node.comment ? node : typescript.setTextRange(createJSDocPublicTag(tagName, comment), node);\n\t\t},\n\t\tupdateJSDocReadonlyTag(\n\t\t\tnode: TS.JSDocReadonlyTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined\n\t\t): TS.JSDocReadonlyTag {\n\t\t\treturn tagName === node.tagName && comment === node.comment ? node : typescript.setTextRange(createJSDocReadonlyTag(tagName, comment), node);\n\t\t},\n\t\tupdateJSDocReturnTag(\n\t\t\tnode: TS.JSDocReturnTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\ttypeExpression: TS.JSDocTypeExpression | undefined,\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined\n\t\t): TS.JSDocReturnTag {\n\t\t\treturn tagName === node.tagName && comment === node.comment && typeExpression === node.typeExpression\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocReturnTag(tagName, typeExpression, comment), node);\n\t\t},\n\t\tupdateJSDocSeeTag(\n\t\t\tnode: TS.JSDocSeeTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\tnameExpression: TS.JSDocNameReference | undefined,\n\t\t\tcomment?: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink>\n\t\t): TS.JSDocSeeTag {\n\t\t\treturn tagName === node.tagName && nameExpression === node.name && comment === node.comment\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocSeeTag(tagName, nameExpression, comment), node);\n\t\t},\n\t\tupdateJSDocSignature(\n\t\t\tnode: TS.JSDocSignature,\n\t\t\ttypeParameters: readonly TS.JSDocTemplateTag[] | undefined,\n\t\t\tparameters: readonly TS.JSDocParameterTag[],\n\t\t\ttype: TS.JSDocReturnTag | undefined\n\t\t): TS.JSDocSignature {\n\t\t\treturn typeParameters === node.typeParameters && parameters === node.parameters && type === node.type\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocSignature(typeParameters, parameters, type), node);\n\t\t},\n\t\tupdateJSDocTemplateTag(\n\t\t\tnode: TS.JSDocTemplateTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\tconstraint: TS.JSDocTypeExpression | undefined,\n\t\t\ttypeParameters: readonly TS.TypeParameterDeclaration[],\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined\n\t\t): TS.JSDocTemplateTag {\n\t\t\treturn tagName === node.tagName && constraint === node.constraint && typeParameters === node.typeParameters && comment === node.comment\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocTemplateTag(tagName, constraint, typeParameters, comment), node);\n\t\t},\n\t\tupdateJSDocText(node: TS.JSDocText, text: string): TS.JSDocText {\n\t\t\treturn text === node.text ? node : typescript.setTextRange(createJSDocText(text), node);\n\t\t},\n\t\tupdateJSDocThisTag(\n\t\t\tnode: TS.JSDocThisTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\ttypeExpression: TS.JSDocTypeExpression | undefined,\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined\n\t\t): TS.JSDocThisTag {\n\t\t\treturn tagName === node.tagName && typeExpression === node.typeExpression && comment === node.comment\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocThisTag(tagName, typeExpression!, comment), node);\n\t\t},\n\t\tupdateJSDocTypeExpression(node: TS.JSDocTypeExpression, type: TS.TypeNode): TS.JSDocTypeExpression {\n\t\t\treturn type === node.type ? node : typescript.setTextRange(createJSDocTypeExpression(type), node);\n\t\t},\n\t\tupdateJSDocTypeLiteral(node: TS.JSDocTypeLiteral, jsDocPropertyTags: readonly TS.JSDocPropertyLikeTag[] | undefined, isArrayType: boolean | undefined): TS.JSDocTypeLiteral {\n\t\t\treturn jsDocPropertyTags === node.jsDocPropertyTags && isArrayType === node.isArrayType\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocTypeLiteral(jsDocPropertyTags, isArrayType), node);\n\t\t},\n\t\tupdateJSDocTypeTag(\n\t\t\tnode: TS.JSDocTypeTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\ttypeExpression: TS.JSDocTypeExpression,\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined\n\t\t): TS.JSDocTypeTag {\n\t\t\treturn tagName === node.tagName && typeExpression === node.typeExpression && comment === node.comment\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocTypeTag(tagName, typeExpression, comment), node);\n\t\t},\n\t\tupdateJSDocTypedefTag(\n\t\t\tnode: TS.JSDocTypedefTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\ttypeExpression: TS.JSDocTypeExpression | TS.JSDocTypeLiteral | undefined,\n\t\t\tfullName: TS.Identifier | TS.JSDocNamespaceDeclaration | undefined,\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined\n\t\t): TS.JSDocTypedefTag {\n\t\t\treturn tagName === node.tagName && typeExpression === node.typeExpression && fullName === node.fullName && comment === node.comment\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocTypedefTag(tagName, typeExpression, fullName, comment), node);\n\t\t},\n\t\tupdateJSDocUnknownTag(node: TS.JSDocUnknownTag, tagName: TS.Identifier, comment: string | TS.NodeArray<TS.JSDocText | TS.JSDocLink> | undefined): TS.JSDocUnknownTag {\n\t\t\treturn tagName === node.tagName && comment === node.comment ? node : typescript.setTextRange(createJSDocUnknownTag(tagName, comment), node);\n\t\t},\n\t\tupdateJSDocVariadicType(node: TS.JSDocVariadicType, type: TS.TypeNode): TS.JSDocVariadicType {\n\t\t\treturn type === node.type ? node : typescript.setTextRange(createJSDocVariadicType(type), node);\n\t\t},\n\t\tupdateJSDocMemberName(node: TS.JSDocMemberName, left: TS.EntityName | TS.JSDocMemberName, right: TS.Identifier): TS.JSDocMemberName {\n\t\t\treturn left === node.left && right === node.right ? node : typescript.setTextRange(createJSDocMemberName(left, right), node);\n\t\t},\n\t\tupdateJSDocLinkCode(node: TS.JSDocLinkCode, name: TS.EntityName | TS.JSDocMemberName | undefined, text: string): TS.JSDocLinkCode {\n\t\t\treturn name === node.name && text === node.text ? node : typescript.setTextRange(createJSDocLinkCode(name, text), node);\n\t\t},\n\t\tupdateJSDocLinkPlain(node: TS.JSDocLinkPlain, name: TS.EntityName | TS.JSDocMemberName | undefined, text: string): TS.JSDocLinkPlain {\n\t\t\treturn name === node.name && text === node.text ? node : typescript.setTextRange(createJSDocLinkPlain(name, text), node);\n\t\t},\n\t\tupdateJSDocOverloadTag(\n\t\t\tnode: TS.JSDocOverloadTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\ttypeExpression: TS.JSDocSignature,\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocComment> | undefined\n\t\t): TS.JSDocOverloadTag {\n\t\t\treturn tagName === node.tagName && typeExpression === node.typeExpression && comment === node.comment\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocOverloadTag(tagName, typeExpression, comment), node);\n\t\t},\n\t\tupdateJSDocThrowsTag(\n\t\t\tnode: TS.JSDocThrowsTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\ttypeExpression: TS.JSDocTypeExpression | undefined,\n\t\t\tcomment?: string | TS.NodeArray<TS.JSDocComment>\n\t\t): TS.JSDocThrowsTag {\n\t\t\treturn tagName === node.tagName && typeExpression === node.typeExpression && comment === node.comment\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocThrowsTag(tagName ?? node.tagName, typeExpression, comment), node);\n\t\t},\n\t\tupdateJSDocSatisfiesTag(\n\t\t\tnode: TS.JSDocSatisfiesTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\ttypeExpression: TS.JSDocTypeExpression,\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocComment> | undefined\n\t\t): TS.JSDocSatisfiesTag {\n\t\t\treturn tagName === node.tagName && typeExpression === node.typeExpression && comment === node.comment\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocSatisfiesTag(tagName, typeExpression, comment), node);\n\t\t},\n\n\t\tupdateJSDocImportTag(\n\t\t\tnode: TS.JSDocImportTag,\n\t\t\ttagName: TS.Identifier | undefined,\n\t\t\timportClause: TS.ImportClause | undefined,\n\t\t\tmoduleSpecifier: TS.Expression,\n\t\t\tattributes: TS.ImportAttributes | undefined,\n\t\t\tcomment: string | TS.NodeArray<TS.JSDocComment> | undefined\n\t\t): TS.JSDocImportTag {\n\t\t\treturn tagName === node.tagName &&\n\t\t\t\timportClause === node.importClause &&\n\t\t\t\tcomment === node.comment &&\n\t\t\t\tmoduleSpecifier === node.moduleSpecifier &&\n\t\t\t\tattributes === node.attributes\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createJSDocImportTag(tagName, importClause, moduleSpecifier, attributes, comment), node);\n\t\t},\n\n\t\tupdateLabeledStatement(node: TS.LabeledStatement, label: TS.Identifier, statement: TS.Statement): TS.LabeledStatement {\n\t\t\treturn typescript4Cast.updateLabel(node as never, label as never, statement as never) as never;\n\t\t},\n\t\tupdateMethodDeclaration,\n\t\tupdateNamedTupleMember(\n\t\t\tnode: TS.NamedTupleMember,\n\t\t\tdotDotDotToken: TS.DotDotDotToken | undefined,\n\t\t\tname: TS.Identifier,\n\t\t\tquestionToken: TS.QuestionToken | undefined,\n\t\t\ttype: TS.TypeNode\n\t\t): TS.NamedTupleMember {\n\t\t\treturn dotDotDotToken === node.dotDotDotToken && name === node.name && questionToken === node.questionToken && type === node.type\n\t\t\t\t? node\n\t\t\t\t: typescript.setTextRange(createNamedTupleMember(dotDotDotToken, name, questionToken, type), node);\n\t\t},\n\t\tupdateNewExpression(\n\t\t\tnode: TS.NewExpression,\n\t\t\texpression: TS.Expression,\n\t\t\ttypeArguments: readonly TS.TypeNode[] | undefined,\n\t\t\targumentsArray: readonly TS.Expression[] | undefined\n\t\t): TS.NewExpression {\n\t\t\treturn typescript4Cast.updateNew(node as never, expression as never, typeArguments as never, argumentsArray as never) as never;\n\t\t},\n\t\tupdateObjectLiteralExpression(node: TS.ObjectLiteralExpression, properties: readonly TS.ObjectLiteralElementLike[]): TS.ObjectLiteralExpression {\n\t\t\treturn typescript4Cast.updateObjectLiteral(node as never, properties as never) as never;\n\t\t},\n\t\tupdateParameterDeclaration,\n\t\tupdateParenthesizedExpression(node: TS.ParenthesizedExpression, expression: TS.Expression): TS.ParenthesizedExpression {\n\t\t\treturn typescript4Cast.updateParen(node as never, expression as never) as never;\n\t\t},\n\t\tupdatePostfixUnaryExpression(node: TS.PostfixUnaryExpression, operand: TS.Expression): TS.PostfixUnaryExpression {\n\t\t\treturn typescript4Cast.updatePostfix(node as never, operand as never) as never;\n\t\t},\n\t\tupdatePrefixUnaryExpression(node: TS.PrefixUnaryExpression, operand: TS.Expression): TS.PrefixUnaryExpression {\n\t\t\treturn typescript4Cast.updatePrefix(node as never, operand as never) as never;\n\t\t},\n\t\tupdatePropertyAccessExpression(node: TS.PropertyAccessExpression, expression: TS.Expression, name: TS.MemberName): TS.PropertyAccessExpression {\n\t\t\treturn typescript4Cast.updatePropertyAccess(node as never, expression as never, name as never) as never;\n\t\t},\n\t\tupdatePropertyDeclaration,\n\t\tupdateReturnStatement(node: TS.ReturnStatement, expression: TS.Expression | undefined): TS.ReturnStatement {\n\t\t\treturn typescript4Cast.updateReturn(node as never, expression as never) as never;\n\t\t},\n\t\tupdateSetAccessorDeclaration,\n\t\tupdateSpreadElement(node: TS.SpreadElement, expression: TS.Expression): TS.SpreadElement {\n\t\t\treturn typescript4Cast.updateSpread(node as never, expression as never) as never;\n\t\t},\n\t\tupdateSwitchStatement(node: TS.SwitchStatement, expression: TS.Expression, caseBlock: TS.CaseBlock): TS.SwitchStatement {\n\t\t\treturn typescript4Cast.updateSwitch(node as never, expression as never, caseBlock as never) as never;\n\t\t},\n\t\tupdateTaggedTemplateExpression(\n\t\t\tnode: TS.TaggedTemplateExpression,\n\t\t\ttag: TS.Expression,\n\t\t\ttypeArguments: readonly TS.TypeNode[] | undefined,\n\t\t\ttemplate: TS.TemplateLiteral\n\t\t): TS.TaggedTemplateExpression {\n\t\t\treturn typescript4Cast.updateTaggedTemplate(node as never, tag as never, typeArguments as never, template as never) as never;\n\t\t},\n\t\tupdateTemplateLiteralType(node: TS.TemplateLiteralTypeNode, head: TS.TemplateHead, templateSpans: readonly TS.TemplateLiteralTypeSpan[]): TS.TemplateLiteralTypeNode {\n\t\t\treturn head === node.head && templateSpans === node.templateSpans ? node : typescript.setTextRange(createTemplateLiteralType(head, templateSpans), node);\n\t\t},\n\t\tupdateTemplateLiteralTypeSpan(node: TS.TemplateLiteralTypeSpan, type: TS.TypeNode, literal: TS.TemplateMiddle | TS.TemplateTail): TS.TemplateLiteralTypeSpan {\n\t\t\treturn type === node.type && literal === node.literal ? node : typescript.setTextRange(createTemplateLiteralTypeSpan(type, literal), node);\n\t\t},\n\t\tupdateClassStaticBlockDeclaration,\n\t\tupdateAssertClause(node: TS.AssertClause, elements: TS.NodeArray<TS.AssertEntry>, multiLine?: boolean): TS.AssertClause {\n\t\t\treturn node.elements !== elements || node.multiLine !== multiLine ? typescript.setTextRange(createAssertClause(elements, multiLine), node) : node;\n\t\t},\n\t\tupdateAssertEntry(node: TS.AssertEntry, name: TS.AssertionKey, value: TS.StringLiteral): TS.AssertEntry {\n\t\t\treturn node.name !== name || node.value !== value ? typescript.setTextRange(createAssertEntry(name, value), node) : node;\n\t\t},\n\t\tupdateImportTypeAssertionContainer(node: TS.ImportTypeAssertionContainer, clause: TS.AssertClause, multiLine?: boolean): TS.ImportTypeAssertionContainer {\n\t\t\treturn node.assertClause !== clause || node.multiLine !== multiLine ? typescript.setTextRange(createImportTypeAssertionContainer(clause, multiLine), node) : node;\n\t\t},\n\t\tupdateImportAttributes(node: TS.ImportAttributes, elements: TS.NodeArray<TS.ImportAttribute>, multiLine?: boolean): TS.ImportAttributes {\n\t\t\treturn node.elements !== elements || node.multiLine !== multiLine ? typescript.setTextRange(createImportAttributes(elements, multiLine), node) : node;\n\t\t},\n\t\tupdateImportAttribute(node: TS.ImportAttribute, name: TS.ImportAttributeName, value: TS.Expression): TS.ImportAttribute {\n\t\t\treturn node.name !== name || node.value !== value ? typescript.setTextRange(createImportAttribute(name, value), node) : node;\n\t\t},\n\t\tupdateJsxNamespacedName(node: TS.JsxNamespacedName, namespace: TS.Identifier, name: TS.Identifier): TS.JsxNamespacedName {\n\t\t\treturn node.namespace !== namespace || node.name !== name ? typescript.setTextRange(createJsxNamespacedName(namespace, name), node) : node;\n\t\t},\n\t\tupdateThrowStatement(node: TS.ThrowStatement, expression: TS.Expression): TS.ThrowStatement {\n\t\t\treturn typescript4Cast.updateThrow(node as never, expression as never) as never;\n\t\t},\n\t\tupdateTryStatement(node: TS.TryStatement, tryBlock: TS.Block, catchClause: TS.CatchClause | undefined, finallyBlock: TS.Block | undefined): TS.TryStatement {\n\t\t\treturn typescript4Cast.updateTry(node as never, tryBlock as never, catchClause as never, finallyBlock as never) as never;\n\t\t},\n\t\tupdateTypeOfExpression(node: TS.TypeOfExpression, expression: TS.Expression): TS.TypeOfExpression {\n\t\t\treturn typescript4Cast.updateTypeOf(node as never, expression as never) as never;\n\t\t},\n\t\tupdateVoidExpression(node: TS.VoidExpression, expression: TS.Expression): TS.VoidExpression {\n\t\t\treturn typescript4Cast.updateVoid(node as never, expression as never) as never;\n\t\t},\n\t\tupdateWhileStatement(node: TS.WhileStatement, expression: TS.Expression, statement: TS.Statement): TS.WhileStatement {\n\t\t\treturn typescript4Cast.updateWhile(node as never, expression as never, statement as never) as never;\n\t\t},\n\t\tupdateWithStatement(node: TS.WithStatement, expression: TS.Expression, statement: TS.Statement): TS.WithStatement {\n\t\t\treturn typescript4Cast.updateWith(node as never, expression as never, statement as never) as never;\n\t\t},\n\t\tupdateYieldExpression(node: TS.YieldExpression, asteriskToken: TS.AsteriskToken | undefined, expression: TS.Expression | undefined): TS.YieldExpression {\n\t\t\treturn typescript4Cast.updateYield(node as never, asteriskToken as never, expression as never) as never;\n\t\t},\n\t\tcreateImportClause(isTypeOnly: boolean, name: TS.Identifier | undefined, namedBindings: TS.NamedImportBindings | undefined): TS.ImportClause {\n\t\t\treturn typescript4Cast.createImportClause(name as never, namedBindings as never, isTypeOnly as never) as never;\n\t\t},\n\t\tcreateCallExpression(expression: TS.Expression, typeArguments: readonly TS.TypeNode[] | undefined, argumentsArray: readonly TS.Expression[] | undefined): TS.CallExpression {\n\t\t\treturn typescript4Cast.createCall(expression as never, typeArguments as never, argumentsArray as never) as never;\n\t\t},\n\t\tupdateCallExpression(\n\t\t\tnode: TS.CallExpression,\n\t\t\texpression: TS.Expression,\n\t\t\ttypeArguments: readonly TS.TypeNode[] | undefined,\n\t\t\targumentsArray: readonly TS.Expression[]\n\t\t): TS.CallExpression {\n\t\t\treturn typescript4Cast.updateCall(node as never, expression as never, typeArguments as never, argumentsArray as never) as never;\n\t\t},\n\t\tcreateArrayLiteralExpression(elements?: readonly TS.Expression[], multiLine?: boolean): TS.ArrayLiteralExpression {\n\t\t\treturn typescript4Cast.createArrayLiteral(elements as never, multiLine as never) as never;\n\t\t},\n\t\tupdateArrayLiteralExpression(node: TS.ArrayLiteralExpression, elements: readonly TS.Expression[]): TS.ArrayLiteralExpression {\n\t\t\treturn typescript4Cast.updateArrayLiteral(node as never, elements as never) as never;\n\t\t},\n\t\tupdateSourceFile(\n\t\t\tnode: TS.SourceFile,\n\t\t\tstatements: readonly TS.Statement[],\n\t\t\tisDeclarationFile?: boolean,\n\t\t\treferencedFiles?: readonly TS.FileReference[],\n\t\t\ttypeReferences?: readonly TS.FileReference[],\n\t\t\thasNoDefaultLib?: boolean,\n\t\t\tlibReferences?: readonly TS.FileReference[]\n\t\t): TS.SourceFile {\n\t\t\treturn typescript4Cast.updateSourceFileNode(\n\t\t\t\tnode as never,\n\t\t\t\tstatements as never,\n\t\t\t\tisDeclarationFile as never,\n\t\t\t\treferencedFiles as never,\n\t\t\t\ttypeReferences as never,\n\t\t\t\thasNoDefaultLib as never,\n\t\t\t\tlibReferences as never\n\t\t\t) as never;\n\t\t},\n\t\tupdateClassExpression,\n\t\tcreatePropertyAccessExpression(expression: TS.Expression, name: string | TS.MemberName): TS.PropertyAccessExpression {\n\t\t\treturn typescript4Cast.createPropertyAccess(expression as never, name as never) as never;\n\t\t},\n\t\tcreateGetAccessorDeclaration,\n\t\tupdateGetAccessorDeclaration,\n\t\tcreateReturnStatement(expression?: TS.Expression): TS.ReturnStatement {\n\t\t\treturn typescript4Cast.createReturn(expression as never) as never;\n\t\t},\n\t\tcreateObjectLiteralExpression(properties?: readonly TS.ObjectLiteralElementLike[], multiLine?: boolean): TS.ObjectLiteralExpression {\n\t\t\treturn typescript4Cast.createObjectLiteral(properties as never, multiLine as never) as never;\n\t\t},\n\t\tcreateVariableDeclaration(name: string | TS.BindingName, exclamationToken?: TS.ExclamationToken, type?: TS.TypeNode, initializer?: TS.Expression): TS.VariableDeclaration {\n\t\t\tif (typescript4Cast.createVariableDeclaration.length === 4) {\n\t\t\t\treturn typescript4Cast.createVariableDeclaration(name as never, exclamationToken as never, type as never, initializer as never) as never;\n\t\t\t}\n\t\t\treturn typescript4Cast.createVariableDeclaration(name as never, type as never, initializer as never) as never;\n\t\t},\n\t\tupdateVariableDeclaration(\n\t\t\tnode: TS.VariableDeclaration,\n\t\t\tname: TS.BindingName,\n\t\t\texclamationToken: TS.ExclamationToken | undefined,\n\t\t\ttype: TS.TypeNode | undefined,\n\t\t\tinitializer: TS.Expression | undefined\n\t\t): TS.VariableDeclaration {\n\t\t\tif (typescript4Cast.updateVariableDeclaration.length === 4) {\n\t\t\t\treturn typescript4Cast.updateVariableDeclaration(node as never, name as never, type as never, initializer as never) as never;\n\t\t\t}\n\n\t\t\treturn typescript4Cast.updateVariableDeclaration(node as never, name as never, exclamationToken as never, type as never, initializer as never) as never;\n\t\t},\n\t\tcreatePropertyAccessChain(expression: TS.Expression, questionDotToken: TS.QuestionDotToken | undefined, name: string | TS.MemberName): TS.PropertyAccessChain {\n\t\t\tif (\"createPropertyAccessChain\" in (typescript as typeof TS)) {\n\t\t\t\treturn typescript4Cast.createPropertyAccessChain(expression as never, questionDotToken as never, name as never) as never;\n\t\t\t}\n\n\t\t\tconst node = typescript4Cast.createPropertyAccess(expression as never, name as never) as unknown as Mutable<TS.PropertyAccessChain>;\n\t\t\tnode.questionDotToken = questionDotToken;\n\t\t\treturn node;\n\t\t},\n\t\tupdatePropertyAccessChain(\n\t\t\tnode: TS.PropertyAccessChain,\n\t\t\texpression: TS.Expression,\n\t\t\tquestionDotToken: TS.QuestionDotToken | undefined,\n\t\t\tname: TS.MemberName\n\t\t): TS.PropertyAccessChain {\n\t\t\tif (\"updatePropertyAccessChain\" in (typescript as typeof TS)) {\n\t\t\t\treturn typescript4Cast.updatePropertyAccessChain(node as never, expression as never, questionDotToken as never, name as never) as never;\n\t\t\t}\n\n\t\t\tconst newNode = typescript4Cast.updatePropertyAccess(node as never, expression as never, name as never) as unknown as Mutable<TS.PropertyAccessChain>;\n\t\t\tnewNode.questionDotToken = questionDotToken;\n\t\t\treturn newNode;\n\t\t},\n\t\tcreateImportEqualsDeclaration,\n\t\tupdateImportEqualsDeclaration,\n\t\tcreateMappedTypeNode(\n\t\t\treadonlyToken: TS.ReadonlyKeyword | TS.PlusToken | TS.MinusToken | undefined,\n\t\t\ttypeParameter: TS.TypeParameterDeclaration,\n\t\t\tnameType: TS.TypeNode | undefined,\n\t\t\tquestionToken: TS.QuestionToken | TS.PlusToken | TS.MinusToken | undefined,\n\t\t\ttype: TS.TypeNode | undefined,\n\t\t\tmembers?: TS.NodeArray<TS.TypeElement>\n\t\t): TS.MappedTypeNode {\n\t\t\treturn (typescript as unknown as typeof import(\"typescript-3-9-2\")).createMappedTypeNode(\n\t\t\t\treadonlyToken as never,\n\t\t\t\ttypeParameter as never,\n\t\t\t\tquestionToken as never,\n\t\t\t\ttype as never\n\t\t\t) as unknown as TS.MappedTypeNode;\n\t\t},\n\t\tupdateMappedTypeNode(\n\t\t\tnode: TS.MappedTypeNode,\n\t\t\treadonlyToken: TS.ReadonlyKeyword | TS.PlusToken | TS.MinusToken | undefined,\n\t\t\ttypeParameter: TS.TypeParameterDeclaration,\n\t\t\tnameType: TS.TypeNode | undefined,\n\t\t\tquestionToken: TS.QuestionToken | TS.PlusToken | TS.MinusToken | undefined,\n\t\t\ttype: TS.TypeNode | undefined,\n\t\t\tmembers?: TS.NodeArray<TS.TypeElement>\n\t\t): TS.MappedTypeNode {\n\t\t\treturn (typescript as unknown as typeof import(\"typescript-3-9-2\")).updateMappedTypeNode(\n\t\t\t\tnode as never,\n\t\t\t\treadonlyToken as never,\n\t\t\t\ttypeParameter as never,\n\t\t\t\tquestionToken as never,\n\t\t\t\ttype as never\n\t\t\t) as unknown as TS.MappedTypeNode;\n\t\t},\n\t\tcreateImportSpecifier(isTypeOnly: boolean, propertyName: TS.Identifier | undefined, name: TS.Identifier): TS.ImportSpecifier {\n\t\t\treturn (typescript as unknown as typeof import(\"typescript-3-9-2\")).createImportSpecifier(propertyName as never, name as never) as unknown as TS.ImportSpecifier;\n\t\t},\n\n\t\tupdateImportSpecifier(node: TS.ImportSpecifier, isTypeOnly: boolean, propertyName: TS.Identifier | undefined, name: TS.Identifier): TS.ImportSpecifier {\n\t\t\treturn (typescript as unknown as typeof import(\"typescript-3-9-2\")).updateImportSpecifier(\n\t\t\t\tnode as never,\n\t\t\t\tpropertyName as never,\n\t\t\t\tname as never\n\t\t\t) as unknown as TS.ImportSpecifier;\n\t\t},\n\t\tcreateExportSpecifier(isTypeOnly: boolean, propertyName: string | TS.Identifier | undefined, name: string | TS.Identifier): TS.ExportSpecifier {\n\t\t\treturn (typescript as unknown as typeof import(\"typescript-3-9-2\")).createExportSpecifier(propertyName as never, name as never) as unknown as TS.ExportSpecifier;\n\t\t},\n\n\t\tupdateExportSpecifier(node: TS.ExportSpecifier, isTypeOnly: boolean, propertyName: TS.Identifier | undefined, name: TS.Identifier): TS.ExportSpecifier {\n\t\t\treturn (typescript as unknown as typeof import(\"typescript-3-9-2\")).updateExportSpecifier(\n\t\t\t\tnode as never,\n\t\t\t\tpropertyName as never,\n\t\t\t\tname as never\n\t\t\t) as unknown as TS.ExportSpecifier;\n\t\t},\n\t\tcreateExportDeclaration,\n\t\tupdateConstructorDeclaration,\n\n\t\t/**\n\t\t * Some TypeScript versions require that the value is a string argument\n\t\t */\n\t\tcreateNumericLiteral(value: string | number, numericLiteralFlags?: TS.TokenFlags): TS.NumericLiteral {\n\t\t\treturn typescript4Cast.createNumericLiteral(String(value), numericLiteralFlags) as never;\n\t\t},\n\n\t\treplaceModifiers<T extends TS.HasModifiers>(n: T, modifiers: readonly TS.Modifier[] | TS.ModifierFlags | undefined): T {\n\t\t\tlet modifierArray;\n\t\t\tif (typeof modifiers === \"number\") {\n\t\t\t\tmodifierArray = typescript4Cast.createModifiersFromModifierFlags(modifiers as never);\n\t\t\t} else {\n\t\t\t\tmodifierArray = modifiers;\n\t\t\t}\n\n\t\t\tconst clone = \"cloneNode\" in typescript4Cast ? (typescript4Cast.cloneNode as (n: T) => Mutable<TS.HasModifiers>)(n) : ({...n} as Mutable<TS.HasModifiers>);\n\t\t\tclone.modifiers = typescript4Cast.createNodeArray(modifierArray as never) as never;\n\t\t\treturn clone as T;\n\t\t},\n\n\t\treplaceDecoratorsAndModifiers<T extends TS.HasModifiers & TS.HasDecorators>(n: T, modifiers: readonly TS.ModifierLike[] | undefined): T {\n\t\t\tconst clone =\n\t\t\t\t\"cloneNode\" in typescript4Cast\n\t\t\t\t\t? (typescript4Cast.cloneNode as (n: T) => Mutable<TS.HasModifiers & TS.HasDecorators>)(n)\n\t\t\t\t\t: ({...n} as Mutable<TS.HasModifiers & TS.HasDecorators>);\n\t\t\tclone.modifiers = typescript4Cast.createNodeArray(modifiers as never) as never;\n\t\t\treturn clone as T;\n\t\t},\n\n\t\treplacePropertyName<T extends TS.AccessorDeclaration | TS.MethodDeclaration | TS.MethodSignature | TS.PropertyDeclaration | TS.PropertySignature | TS.PropertyAssignment>(\n\t\t\tn: T,\n\t\t\tname: T[\"name\"]\n\t\t): T {\n\t\t\tconst clone = \"cloneNode\" in typescript4Cast ? (typescript4Cast.cloneNode as (n: T) => Mutable<T>)(n) : ({...n} as Mutable<T>);\n\t\t\tclone.name = name;\n\t\t\treturn clone as T;\n\t\t}\n\t};\n}\n"],"mappings":"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BACR,WACA,cACA,iBACA,GACuB;AACvB,iBAAQ,QAA8D;AAAA,YACrE;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAEA,iBAAS,wBACR,MACA,WACA,cACA,iBACA,GACuB;AACvB,iBAAQ,QAA8D;AAAA,YACrE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAEA,eAAO,EAAC,yBAAyB,wBAAuB;AAAA,MACzD,GAAG,IACF,CAAC;AAAA,MACJ,GAAI,6BACA,uBAAM;AACP,iBAAS,wBACR,WACA,YACA,cACA,iBACA,GACuB;AACvB,iBAAQ,QAA8D;AAAA,YACrE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAEA,iBAAS,wBACR,MACA,WACA,YACA,cACA,iBACA,GACuB;AACvB,iBAAQ,QAA8D;AAAA,YACrE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAEA,eAAO,EAAC,yBAAyB,wBAAuB;AAAA,MACzD,GAAG,IACF,CAAC;AAAA,MACJ,GAAI,2BACD;AAAA,QACA,qBACC,eACA,eACA,UACA,eACA,MACoB;AACpB,iBAAQ,QAA8D;AAAA,YACrE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,QAEA,qBACC,MACA,eACA,eACA,UACA,eACA,MACoB;AACpB,iBAAQ,QAA8D;AAAA,YACrE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,MACD,IACC,CAAC;AAAA,MACJ,GAAI,2BACD;AAAA,QACA,qBACC,eACA,eACA,UACA,eACA,MACA,SACoB;AACpB,iBAAQ,QAA8D;AAAA,YACrE;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,YACA;AAAA,UACD;AAAA,QACD;AAAA,QAEA,qBACC,MACA,eACA,eACA,UACA,eACA,MACA,SACoB;AACpB,iBAAQ,QAA8D;AAAA,YACrE;AAAA,YACA;AAAA,YACA;AAAA,YA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","names":[]}