{"version":3,"sources":["../src/index.ts","../src/clone-node/clone-identifier.ts","../src/clone-node/clone-type-alias-declaration.ts","../src/clone-node/clone-token.ts","../src/clone-node/clone-decorator.ts","../src/clone-node/clone-type-parameter-declaration.ts","../src/clone-node/clone-qualified-name.ts","../src/clone-node/clone-computed-property-name.ts","../src/clone-node/clone-call-signature-declaration.ts","../src/clone-node/clone-construct-signature-declaration.ts","../src/clone-node/clone-variable-declaration.ts","../src/clone-node/clone-variable-declaration-list.ts","../src/clone-node/clone-variable-statement.ts","../src/clone-node/util/get-modifier-likes.ts","../src/clone-node/clone-parameter-declaration.ts","../src/clone-node/clone-binding-element.ts","../src/clone-node/clone-property-signature.ts","../src/clone-node/clone-property-declaration.ts","../src/clone-node/clone-property-assignment.ts","../src/clone-node/clone-shorthand-property-assignment.ts","../src/clone-node/clone-spread-assignment.ts","../src/clone-node/clone-object-binding-pattern.ts","../src/clone-node/clone-array-binding-pattern.ts","../src/clone-node/clone-function-declaration.ts","../src/clone-node/clone-method-signature.ts","../src/clone-node/clone-method-declaration.ts","../src/clone-node/clone-constructor-declaration.ts","../src/clone-node/clone-semicolon-class-element.ts","../src/clone-node/clone-get-accessor-declaration.ts","../src/clone-node/clone-set-accessor-declaration.ts","../src/clone-node/clone-index-signature-declaration.ts","../src/clone-node/util/is-keyword-type-node.ts","../src/clone-node/clone-keyword-type-node.ts","../src/clone-node/clone-import-type-node.ts","../src/clone-node/clone-this-type-node.ts","../src/clone-node/clone-function-type-node.ts","../src/clone-node/util/is-node-array.ts","../src/clone-node/util/ensure-node-array.ts","../src/clone-node/clone-constructor-type-node.ts","../src/clone-node/clone-type-reference-node.ts","../src/clone-node/clone-type-predicate-node.ts","../src/clone-node/clone-source-file.ts","../src/clone-node/clone-type-query-node.ts","../src/clone-node/clone-type-literal-node.ts","../src/clone-node/clone-array-type-node.ts","../src/clone-node/clone-tuple-type-node.ts","../src/clone-node/clone-optional-type-node.ts","../src/clone-node/util/is-optional-type-node.ts","../src/clone-node/clone-rest-type-node.ts","../src/clone-node/util/is-rest-type-node.ts","../src/clone-node/clone-union-type-node.ts","../src/clone-node/clone-intersection-type-node.ts","../src/clone-node/clone-literal-type-node.ts","../src/clone-node/clone-string-literal.ts","../src/clone-node/util/is-boolean-literal.ts","../src/clone-node/clone-boolean-literal.ts","../src/clone-node/clone-prefix-unary-expression.ts","../src/clone-node/clone-regular-expression-literal.ts","../src/clone-node/clone-no-substitution-template-literal.ts","../src/clone-node/clone-numeric-literal.ts","../src/clone-node/clone-big-int-literal.ts","../src/clone-node/clone-conditional-type-node.ts","../src/clone-node/clone-infer-type-node.ts","../src/clone-node/clone-block.ts","../src/clone-node/clone-throw-statement.ts","../src/clone-node/clone-new-expression.ts","../src/clone-node/clone-call-expression.ts","../src/clone-node/clone-expression-statement.ts","../src/clone-node/clone-expression-with-type-arguments.ts","../src/clone-node/clone-property-access-expression.ts","../src/clone-node/clone-element-access-expression.ts","../src/clone-node/clone-array-literal-expression.ts","../src/clone-node/clone-object-literal-expression.ts","../src/clone-node/clone-template-expression.ts","../src/clone-node/clone-template-span.ts","../src/clone-node/clone-template-head.ts","../src/clone-node/clone-template-middle.ts","../src/clone-node/clone-template-tail.ts","../src/clone-node/clone-conditional-expression.ts","../src/clone-node/clone-binary-expression.ts","../src/clone-node/clone-parenthesized-expression.ts","../src/clone-node/clone-parenthesized-type-node.ts","../src/clone-node/clone-arrow-function.ts","../src/clone-node/clone-class-declaration.ts","../src/clone-node/clone-class-expression.ts","../src/clone-node/clone-enum-declaration.ts","../src/clone-node/clone-interface-declaration.ts","../src/clone-node/clone-enum-member.ts","../src/clone-node/clone-heritage-clause.ts","../src/clone-node/clone-empty-statement.ts","../src/clone-node/clone-type-operator-node.ts","../src/clone-node/clone-indexed-access-type-node.ts","../src/clone-node/clone-mapped-type-node.ts","../src/clone-node/clone-omitted-expression.ts","../src/clone-node/clone-partially-omitted-expression.ts","../src/clone-node/util/is-partially-emitted-expression.ts","../src/clone-node/clone-postfix-unary-expression.ts","../src/clone-node/util/is-null-literal.ts","../src/clone-node/clone-null-literal.ts","../src/clone-node/util/is-this-expression.ts","../src/clone-node/clone-this-expression.ts","../src/clone-node/clone-return-statement.ts","../src/clone-node/util/is-super-expression.ts","../src/clone-node/clone-super-expression.ts","../src/clone-node/clone-delete-expression.ts","../src/clone-node/clone-as-expression.ts","../src/clone-node/clone-type-assertion.ts","../src/clone-node/clone-await-expression.ts","../src/clone-node/clone-yield-expression.ts","../src/clone-node/clone-for-of-statement.ts","../src/clone-node/clone-for-in-statement.ts","../src/clone-node/clone-for-statement.ts","../src/clone-node/clone-while-statement.ts","../src/clone-node/clone-labeled-statement.ts","../src/clone-node/clone-break-statement.ts","../src/clone-node/clone-continue-statement.ts","../src/clone-node/clone-if-statement.ts","../src/clone-node/clone-do-statement.ts","../src/clone-node/clone-non-null-expression.ts","../src/clone-node/clone-type-of-expression.ts","../src/clone-node/clone-void-expression.ts","../src/clone-node/clone-function-expression.ts","../src/clone-node/clone-spread-element.ts","../src/clone-node/clone-tagged-template-expression.ts","../src/clone-node/clone-meta-property.ts","../src/clone-node/clone-jsx-element.ts","../src/clone-node/clone-jsx-attributes.ts","../src/clone-node/clone-jsx-opening-element.ts","../src/clone-node/clone-jsx-self-closing-element.ts","../src/clone-node/clone-jsx-fragment.ts","../src/clone-node/clone-jsx-opening-fragment.ts","../src/clone-node/clone-jsx-closing-fragment.ts","../src/clone-node/clone-jsx-attribute.ts","../src/clone-node/clone-jsx-spread-attribute.ts","../src/clone-node/clone-jsx-closing-element.ts","../src/clone-node/clone-jsx-expression.ts","../src/clone-node/clone-jsx-text.ts","../src/clone-node/util/is-not-emitted-statement.ts","../src/clone-node/clone-not-emitted-statement.ts","../src/clone-node/util/is-comma-list-expression.ts","../src/clone-node/clone-comma-list-expression.ts","../src/clone-node/clone-debugger-statement.ts","../src/clone-node/clone-with-statement.ts","../src/clone-node/clone-switch-statement.ts","../src/clone-node/clone-case-block.ts","../src/clone-node/clone-case-clause.ts","../src/clone-node/clone-default-clause.ts","../src/clone-node/clone-try-statement.ts","../src/clone-node/clone-catch-clause.ts","../src/clone-node/clone-module-declaration.ts","../src/clone-node/clone-module-block.ts","../src/clone-node/clone-import-declaration.ts","../src/clone-node/clone-import-equals-declaration.ts","../src/clone-node/clone-import-clause.ts","../src/clone-node/clone-named-imports.ts","../src/clone-node/clone-namespace-import.ts","../src/clone-node/clone-import-specifier.ts","../src/clone-node/clone-external-module-reference.ts","../src/clone-node/clone-namespace-export-declaration.ts","../src/clone-node/clone-export-declaration.ts","../src/clone-node/clone-named-exports.ts","../src/clone-node/clone-export-specifier.ts","../src/clone-node/clone-export-assignment.ts","../src/clone-node/util/to-internal-options.ts","../src/clone-node/util/is-js-doc-comment.ts","../src/clone-node/clone-js-doc-comment.ts","../src/clone-node/util/is-js-doc-unknown-tag.ts","../src/clone-node/util/is-js-doc-parameter-tag.ts","../src/clone-node/clone-js-doc-parameter-tag.ts","../src/clone-node/util/is-js-doc-return-tag.ts","../src/clone-node/clone-js-doc-return-tag.ts","../src/clone-node/util/is-js-doc-type-expression.ts","../src/clone-node/clone-js-doc-type-expression.ts","../src/clone-node/util/is-js-doc-enum-tag.ts","../src/clone-node/clone-js-doc-enum-tag.ts","../src/clone-node/util/is-js-doc-type-tag.ts","../src/clone-node/clone-js-doc-type-tag.ts","../src/clone-node/util/is-js-doc-all-type.ts","../src/clone-node/clone-js-doc-all-type.ts","../src/clone-node/util/is-js-doc-unknown-type.ts","../src/clone-node/clone-js-doc-unknown-type.ts","../src/clone-node/util/is-js-doc-non-nullable-type.ts","../src/clone-node/clone-js-doc-non-nullable-type.ts","../src/clone-node/util/is-js-doc-nullable-type.ts","../src/clone-node/clone-js-doc-nullable-type.ts","../src/clone-node/util/is-js-doc-optional-type.ts","../src/clone-node/clone-js-doc-optional-type.ts","../src/clone-node/util/is-js-doc-function-type.ts","../src/clone-node/clone-js-doc-function-type.ts","../src/clone-node/util/is-js-doc-variadic-type.ts","../src/clone-node/clone-js-doc-variadic-type.ts","../src/clone-node/util/is-js-doc-namepath-type.ts","../src/clone-node/clone-js-doc-namepath-type.ts","../src/clone-node/clone-js-doc-unknown-tag.ts","../src/clone-node/util/is-js-doc-augments-tag.ts","../src/clone-node/clone-js-doc-augments-tag.ts","../src/clone-node/util/is-js-doc-author-tag.ts","../src/clone-node/clone-js-doc-author-tag.ts","../src/clone-node/util/is-js-doc-class-tag.ts","../src/clone-node/clone-js-doc-class-tag.ts","../src/clone-node/util/is-js-doc-this-tag.ts","../src/clone-node/clone-js-doc-this-tag.ts","../src/clone-node/util/is-js-doc-template-tag.ts","../src/clone-node/clone-js-doc-template-tag.ts","../src/clone-node/util/is-js-doc-typedef-tag.ts","../src/clone-node/clone-js-doc-typedef-tag.ts","../src/clone-node/util/is-js-doc-callback-tag.ts","../src/clone-node/clone-js-doc-callback-tag.ts","../src/clone-node/util/is-js-doc-signature.ts","../src/clone-node/clone-js-doc-signature.ts","../src/clone-node/util/is-js-doc-property-tag.ts","../src/clone-node/clone-js-doc-property-tag.ts","../src/clone-node/util/is-js-doc-type-literal.ts","../src/clone-node/clone-js-doc-type-literal.ts","../src/clone-node/util/set-parents.ts","../src/clone-node/util/get-original-node.ts","../src/clone-node/util/preserve-comments.ts","../src/clone-node/util/next-options.ts","../src/clone-node/util/payload.ts","../src/clone-node/clone-namespace-export.ts","../src/clone-node/util/is-js-doc-readonly-tag.ts","../src/clone-node/clone-js-doc-readonly-tag.ts","../src/clone-node/util/is-js-doc-see-tag.ts","../src/clone-node/clone-js-doc-see-tag.ts","../src/clone-node/util/is-js-doc-private-tag.ts","../src/clone-node/clone-js-doc-private-tag.ts","../src/clone-node/util/is-js-doc-protected-tag.ts","../src/clone-node/clone-js-doc-protected-tag.ts","../src/clone-node/util/is-js-doc-public-tag.ts","../src/clone-node/clone-js-doc-public-tag.ts","../src/clone-node/clone-private-identifier.ts","../src/clone-node/util/to-set-parent-nodes-options.ts","../src/clone-node/util/is-named-tuple-member.ts","../src/clone-node/clone-named-tuple-member.ts","../src/clone-node/util/is-js-doc-deprecated-tag.ts","../src/clone-node/clone-js-doc-deprecated-tag.ts","../src/clone-node/util/is-template-literal-type-node.ts","../src/clone-node/clone-template-literal-type-node.ts","../src/clone-node/util/is-template-literal-type-span.ts","../src/clone-node/clone-template-literal-type-span.ts","../src/clone-node/util/is-js-doc-link.ts","../src/clone-node/clone-js-doc-link.ts","../src/clone-node/clone-property-access-chain.ts","../src/clone-node/clone-class-static-block-declaration.ts","../src/clone-node/util/is-js-doc-link-code.ts","../src/clone-node/clone-js-doc-link-code.ts","../src/clone-node/util/is-js-doc-link-plain.ts","../src/clone-node/clone-js-doc-link-plain.ts","../src/clone-node/util/is-js-doc-member-name.ts","../src/clone-node/clone-js-doc-member-name.ts","../src/clone-node/clone-assert-clause.ts","../src/clone-node/clone-assert-entry.ts","../src/clone-node/util/is-import-type-assertion-container.ts","../src/clone-node/clone-import-type-assertion-container.ts","../src/clone-node/clone-satisfies-expression.ts","../src/clone-node/util/is-js-doc-satisfies-tag.ts","../src/clone-node/clone-js-doc-satisfies-tag.ts","../src/clone-node/util/is-js-doc-overload-tag.ts","../src/clone-node/clone-js-doc-overload-tag.ts","../src/clone-node/clone-js-doc-throws-tag.ts","../src/clone-node/util/is-js-doc-throws-tag.ts","../src/clone-node/util/is-jsx-namespaced-name.ts","../src/clone-node/clone-jsx-namespaced-name.ts","../src/clone-node/clone-import-attributes.ts","../src/clone-node/clone-import-attribute.ts","../src/clone-node/util/is-js-doc-import-tag.ts","../src/clone-node/clone-js-doc-import-tag.ts","../src/clone-node/clone-node.ts"],"sourcesContent":["export {cloneNode, preserveNode, setParentNodes} from \"./clone-node/clone-node.js\";\nexport type {CloneNodeOptions, CloneNodeHook} from \"./clone-node/clone-node-options.js\";\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneIdentifier(node: TS.Identifier, options: CloneNodeVisitorOptions<TS.Identifier>): TS.Identifier {\n\tconst text = \"text\" in node ? node.text : options.typescript.unescapeLeadingUnderscores((node as TS.Identifier).escapedText);\n\treturn options.factory.createIdentifier(options.hook(\"text\", text, text));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTypeAliasDeclaration(node: TS.TypeAliasDeclaration, options: CloneNodeVisitorOptions<TS.TypeAliasDeclaration>): TS.TypeAliasDeclaration {\n\treturn options.factory.createTypeAliasDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"typeParameters\", options.nextNodes(node.typeParameters), node.typeParameters),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type)\n\t);\n}\n","import type {CloneNodeVisitorOptions, NodeHookValue} from \"./clone-node-options.js\";\nimport type {TS} from \"./type/ts.js\";\n\nexport function cloneToken<Tkind extends TS.SyntaxKind>(node: TS.Token<Tkind>, options: CloneNodeVisitorOptions<TS.Token<Tkind>>): TS.Token<Tkind> {\n\treturn options.factory.createToken(\n\t\toptions.hook(\"kind\", node.kind as NodeHookValue<TS.Token<Tkind>, \"kind\">, node.kind as NodeHookValue<TS.Token<Tkind>, \"kind\">) as never\n\t) as unknown as TS.Token<Tkind>;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneDecorator(node: TS.Decorator, options: CloneNodeVisitorOptions<TS.Decorator>): TS.Decorator {\n\treturn options.factory.createDecorator(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {TS} from \"./type/ts.js\";\n\nexport function cloneTypeParameterDeclaration(node: TS.TypeParameterDeclaration, options: CloneNodeVisitorOptions<TS.TypeParameterDeclaration>): TS.TypeParameterDeclaration {\n\treturn options.factory.createTypeParameterDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"constraint\", options.nextNode(node.constraint), node.constraint),\n\t\toptions.hook(\"default\", options.nextNode(node.default), node.default)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneQualifiedName(node: TS.QualifiedName, options: CloneNodeVisitorOptions<TS.QualifiedName>): TS.QualifiedName {\n\treturn options.factory.createQualifiedName(options.hook(\"left\", options.nextNode(node.left), node.left), options.hook(\"right\", options.nextNode(node.right), node.right));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneComputedPropertyName(node: TS.ComputedPropertyName, options: CloneNodeVisitorOptions<TS.ComputedPropertyName>): TS.ComputedPropertyName {\n\treturn options.factory.createComputedPropertyName(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {TS} from \"./type/ts.js\";\n\nexport function cloneCallSignatureDeclaration(node: TS.CallSignatureDeclaration, options: CloneNodeVisitorOptions<TS.CallSignatureDeclaration>): TS.CallSignatureDeclaration {\n\treturn options.factory.createCallSignature(\n\t\toptions.hook(\"typeParameters\", options.nextNodes(node.typeParameters), node.typeParameters),\n\t\toptions.hook(\"parameters\", options.nextNodes(node.parameters), node.parameters),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneConstructSignatureDeclaration(\n\tnode: TS.ConstructSignatureDeclaration,\n\toptions: CloneNodeVisitorOptions<TS.ConstructSignatureDeclaration>\n): TS.ConstructSignatureDeclaration {\n\treturn options.factory.createConstructSignature(\n\t\toptions.hook(\"typeParameters\", options.nextNodes(node.typeParameters), node.typeParameters),\n\t\toptions.hook(\"parameters\", options.nextNodes(node.parameters), node.parameters),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneVariableDeclaration(node: TS.VariableDeclaration, options: CloneNodeVisitorOptions<TS.VariableDeclaration>): TS.VariableDeclaration {\n\tconst clonedVariableDeclaration = options.factory.createVariableDeclaration(\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"exclamationToken\", options.nextNode(node.exclamationToken), node.exclamationToken),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type),\n\t\toptions.hook(\"initializer\", options.nextNode(node.initializer), node.initializer)\n\t);\n\n\t// createVariableDeclaration may wrap the initializer expression in parentheses. We want to make sure that we're producing identical clones here,\n\t// so if the new VariableDeclaration has a ParenthesizedExpression that weren't there before, remove it.\n\tif (\n\t\tnode.initializer != null &&\n\t\tclonedVariableDeclaration.initializer != null &&\n\t\t!options.typescript.isParenthesizedExpression(node.initializer) &&\n\t\toptions.typescript.isParenthesizedExpression(clonedVariableDeclaration.initializer)\n\t) {\n\t\t(clonedVariableDeclaration as Mutable<TS.VariableDeclaration>).initializer = clonedVariableDeclaration.initializer.expression;\n\t}\n\n\treturn clonedVariableDeclaration;\n}\n","import type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {TS} from \"./type/ts.js\";\n\nexport function cloneVariableDeclarationList(node: TS.VariableDeclarationList, options: CloneNodeVisitorOptions<TS.VariableDeclarationList>): TS.VariableDeclarationList {\n\treturn options.factory.createVariableDeclarationList(\n\t\toptions.hook(\"declarations\", options.nextNodes(node.declarations), node.declarations),\n\t\toptions.hook(\"flags\", node.flags, node.flags)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneVariableStatement(node: TS.VariableStatement, options: CloneNodeVisitorOptions<TS.VariableStatement>): TS.VariableStatement {\n\treturn options.factory.createVariableStatement(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"declarationList\", options.nextNode(node.declarationList), node.declarationList)\n\t);\n}\n","import type {TS} from \"../type/ts.js\";\n\nexport function getModifierLikes(node: TS.Node): readonly TS.ModifierLike[] | undefined {\n\tconst modifiers = (\"modifiers\" in node && Array.isArray(node.modifiers) ? node.modifiers : []) as TS.ModifierLike[] | undefined;\n\n\tif (\"decorators\" in node && Array.isArray(node.decorators)) {\n\t\treturn [...(node.decorators as TS.Decorator[]), ...(modifiers as TS.Modifier[])];\n\t} else {\n\t\treturn modifiers;\n\t}\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport {getModifierLikes} from \"./util/get-modifier-likes.js\";\n\nexport function cloneParameterDeclaration(node: TS.ParameterDeclaration, options: CloneNodeVisitorOptions<TS.ParameterDeclaration>): TS.ParameterDeclaration {\n\tconst modifierLikes = getModifierLikes(node);\n\treturn options.factory.createParameterDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(modifierLikes), modifierLikes),\n\t\toptions.hook(\"dotDotDotToken\", options.nextNode(node.dotDotDotToken), node.dotDotDotToken),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"questionToken\", options.nextNode(node.questionToken), node.questionToken),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type),\n\t\toptions.hook(\"initializer\", options.nextNode(node.initializer), node.initializer)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneBindingElement(node: TS.BindingElement, options: CloneNodeVisitorOptions<TS.BindingElement>): TS.BindingElement {\n\treturn options.factory.createBindingElement(\n\t\toptions.hook(\"dotDotDotToken\", options.nextNode(node.dotDotDotToken), node.dotDotDotToken),\n\t\toptions.hook(\"propertyName\", options.nextNode(node.propertyName), node.propertyName),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"initializer\", options.nextNode(node.initializer), node.initializer)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function clonePropertySignature(node: TS.PropertySignature, options: CloneNodeVisitorOptions<TS.PropertySignature>): TS.PropertySignature {\n\treturn options.factory.createPropertySignature(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"questionToken\", options.nextNode(node.questionToken), node.questionToken),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport {getModifierLikes} from \"./util/get-modifier-likes.js\";\n\nexport function clonePropertyDeclaration(node: TS.PropertyDeclaration, options: CloneNodeVisitorOptions<TS.PropertyDeclaration>): TS.PropertyDeclaration {\n\tconst modifierLikes = getModifierLikes(node);\n\treturn options.factory.createPropertyDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(modifierLikes), modifierLikes),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\tnode.questionToken != null\n\t\t\t? options.hook(\"questionToken\", options.nextNode(node.questionToken), node.questionToken)\n\t\t\t: options.hook(\"exclamationToken\", options.nextNode(node.exclamationToken), node.exclamationToken),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type),\n\t\toptions.hook(\"initializer\", options.nextNode(node.initializer), node.initializer)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function clonePropertyAssignment(node: TS.PropertyAssignment, options: CloneNodeVisitorOptions<TS.PropertyAssignment>): TS.PropertyAssignment {\n\tconst clonedPropertyAssignment = options.factory.createPropertyAssignment(\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"initializer\", options.nextNode(node.initializer), node.initializer)\n\t);\n\n\t// createPropertyAssignment may wrap the initializer expression in parentheses. We want to make sure that we're producing identical clones here,\n\t// so if the new PropertyAssignment has a ParenthesizedExpression that weren't there before, remove it.\n\tif (!options.typescript.isParenthesizedExpression(node.initializer) && options.typescript.isParenthesizedExpression(clonedPropertyAssignment.initializer)) {\n\t\t(clonedPropertyAssignment as Mutable<TS.PropertyAssignment>).initializer = clonedPropertyAssignment.initializer.expression;\n\t}\n\n\treturn clonedPropertyAssignment;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneShorthandPropertyAssignment(\n\tnode: TS.ShorthandPropertyAssignment,\n\toptions: CloneNodeVisitorOptions<TS.ShorthandPropertyAssignment>\n): TS.ShorthandPropertyAssignment {\n\treturn options.factory.createShorthandPropertyAssignment(\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"objectAssignmentInitializer\", options.nextNode(node.objectAssignmentInitializer), node.objectAssignmentInitializer)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneSpreadAssignment(node: TS.SpreadAssignment, options: CloneNodeVisitorOptions<TS.SpreadAssignment>): TS.SpreadAssignment {\n\treturn options.factory.createSpreadAssignment(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneObjectBindingPattern(node: TS.ObjectBindingPattern, options: CloneNodeVisitorOptions<TS.ObjectBindingPattern>): TS.ObjectBindingPattern {\n\treturn options.factory.createObjectBindingPattern(options.hook(\"elements\", options.nextNodes(node.elements), node.elements));\n}\n","import type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {TS} from \"./type/ts.js\";\n\nexport function cloneArrayBindingPattern(node: TS.ArrayBindingPattern, options: CloneNodeVisitorOptions<TS.ArrayBindingPattern>): TS.ArrayBindingPattern {\n\treturn options.factory.createArrayBindingPattern(options.hook(\"elements\", options.nextNodes(node.elements), node.elements));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport {getModifierLikes} from \"./util/get-modifier-likes.js\";\n\nexport function cloneFunctionDeclaration(node: TS.FunctionDeclaration, options: CloneNodeVisitorOptions<TS.FunctionDeclaration>): TS.FunctionDeclaration {\n\tconst modifierLikes = getModifierLikes(node);\n\treturn options.factory.createFunctionDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(modifierLikes), modifierLikes as TS.Modifier[]),\n\t\toptions.hook(\"asteriskToken\", options.nextNode(node.asteriskToken), node.asteriskToken),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"typeParameters\", options.nextNodes(node.typeParameters), node.typeParameters),\n\t\toptions.hook(\"parameters\", options.nextNodes(node.parameters), node.parameters),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type),\n\t\toptions.hook(\"body\", options.nextNode(node.body), node.body)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneMethodSignature(node: TS.MethodSignature, options: CloneNodeVisitorOptions<TS.MethodSignature>): TS.MethodSignature {\n\treturn options.factory.createMethodSignature(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"questionToken\", options.nextNode(node.questionToken), node.questionToken),\n\t\toptions.hook(\"typeParameters\", options.nextNodes(node.typeParameters), node.typeParameters),\n\t\toptions.hook(\"parameters\", options.nextNodes(node.parameters), node.parameters),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport {getModifierLikes} from \"./util/get-modifier-likes.js\";\n\nexport function cloneMethodDeclaration(node: TS.MethodDeclaration, options: CloneNodeVisitorOptions<TS.MethodDeclaration>): TS.MethodDeclaration {\n\tconst modifierLikes = getModifierLikes(node);\n\treturn options.factory.createMethodDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(modifierLikes), modifierLikes),\n\t\toptions.hook(\"asteriskToken\", options.nextNode(node.asteriskToken), node.asteriskToken),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"questionToken\", options.nextNode(node.questionToken), node.questionToken),\n\t\toptions.hook(\"typeParameters\", options.nextNodes(node.typeParameters), node.typeParameters),\n\t\toptions.hook(\"parameters\", options.nextNodes(node.parameters), node.parameters),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type),\n\t\toptions.hook(\"body\", options.nextNode(node.body), node.body)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneConstructorDeclaration(node: TS.ConstructorDeclaration, options: CloneNodeVisitorOptions<TS.ConstructorDeclaration>): TS.ConstructorDeclaration {\n\treturn options.factory.createConstructorDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"parameters\", options.nextNodes(node.parameters), node.parameters),\n\t\toptions.hook(\"body\", options.nextNode(node.body), node.body)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneSemicolonClassElement(_node: TS.SemicolonClassElement, options: CloneNodeVisitorOptions<TS.SemicolonClassElement>): TS.SemicolonClassElement {\n\treturn options.factory.createSemicolonClassElement();\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport {getModifierLikes} from \"./util/get-modifier-likes.js\";\n\nexport function cloneGetAccessorDeclaration(node: TS.GetAccessorDeclaration, options: CloneNodeVisitorOptions<TS.GetAccessorDeclaration>): TS.GetAccessorDeclaration {\n\tconst modifierLikes = getModifierLikes(node);\n\treturn options.factory.createGetAccessorDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(modifierLikes), modifierLikes),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"parameters\", options.nextNodes(node.parameters), node.parameters),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type),\n\t\toptions.hook(\"body\", options.nextNode(node.body), node.body)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport {getModifierLikes} from \"./util/get-modifier-likes.js\";\n\nexport function cloneSetAccessorDeclaration(node: TS.SetAccessorDeclaration, options: CloneNodeVisitorOptions<TS.SetAccessorDeclaration>): TS.SetAccessorDeclaration {\n\tconst modifierLikes = getModifierLikes(node);\n\treturn options.factory.createSetAccessorDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(modifierLikes), modifierLikes),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"parameters\", options.nextNodes(node.parameters), node.parameters),\n\t\toptions.hook(\"body\", options.nextNode(node.body), node.body)\n\t);\n}\n","import type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {TS} from \"./type/ts.js\";\n\nexport function cloneIndexSignatureDeclaration(node: TS.IndexSignatureDeclaration, options: CloneNodeVisitorOptions<TS.IndexSignatureDeclaration>): TS.IndexSignatureDeclaration {\n\treturn options.factory.createIndexSignature(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"parameters\", options.nextNodes(node.parameters), node.parameters),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type)\n\t);\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a KeywordTypeNode\n */\nexport function isKeywordTypeNode(node: MetaNode, typescript: typeof TS): node is TS.KeywordTypeNode {\n\tswitch (node.kind) {\n\t\tcase typescript.SyntaxKind.AnyKeyword:\n\t\tcase typescript.SyntaxKind.UnknownKeyword:\n\t\tcase typescript.SyntaxKind.BigIntKeyword:\n\t\tcase typescript.SyntaxKind.ObjectKeyword:\n\t\tcase typescript.SyntaxKind.BooleanKeyword:\n\t\tcase typescript.SyntaxKind.StringKeyword:\n\t\tcase typescript.SyntaxKind.SymbolKeyword:\n\t\tcase typescript.SyntaxKind.VoidKeyword:\n\t\tcase typescript.SyntaxKind.UndefinedKeyword:\n\t\tcase typescript.SyntaxKind.NullKeyword:\n\t\tcase typescript.SyntaxKind.NeverKeyword:\n\t\t\treturn true;\n\t}\n\treturn false;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneKeywordTypeNode(node: TS.KeywordTypeNode, options: CloneNodeVisitorOptions<TS.KeywordTypeNode>): TS.KeywordTypeNode {\n\treturn options.factory.createKeywordTypeNode(options.hook(\"kind\", node.kind, node.kind));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneImportTypeNode(node: TS.ImportTypeNode, options: CloneNodeVisitorOptions<TS.ImportTypeNode>): TS.ImportTypeNode {\n\treturn options.factory.createImportTypeNode(\n\t\toptions.hook(\"argument\", options.nextNode(node.argument), node.argument),\n\t\toptions.hook(\"attributes\", options.nextNode(node.attributes), node.attributes),\n\t\toptions.hook(\"qualifier\", options.nextNode(node.qualifier), node.qualifier),\n\t\toptions.hook(\"typeArguments\", options.nextNodes(node.typeArguments), node.typeArguments),\n\t\toptions.hook(\"isTypeOf\", node.isTypeOf, node.isTypeOf)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneThisTypeNode(_node: TS.ThisTypeNode, options: CloneNodeVisitorOptions<TS.ThisTypeNode>): TS.ThisTypeNode {\n\treturn options.factory.createThisTypeNode();\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneFunctionTypeNode(node: TS.FunctionTypeNode, options: CloneNodeVisitorOptions<TS.FunctionTypeNode>): TS.FunctionTypeNode {\n\treturn options.factory.createFunctionTypeNode(\n\t\toptions.hook(\"typeParameters\", options.nextNodes(node.typeParameters), node.typeParameters),\n\t\toptions.hook(\"parameters\", options.nextNodes(node.parameters), node.parameters),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type)\n\t);\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\nexport function isNodeArray<T extends MetaNode>(item: unknown): item is TS.NodeArray<T> {\n\treturn item != null && Array.isArray(item) && \"pos\" in item;\n}\n","import type {MetaNode} from \"../type/meta-node.js\";\nimport type {TS} from \"../type/ts.js\";\nimport {isNodeArray} from \"./is-node-array.js\";\n\nexport function ensureNodeArray<T extends MetaNode>(item: T[] | readonly T[] | TS.NodeArray<T>, factory: TS.NodeFactory): TS.NodeArray<T>;\nexport function ensureNodeArray<T extends MetaNode>(item: T[] | readonly T[] | TS.NodeArray<T> | undefined, factory: TS.NodeFactory): TS.NodeArray<T> | undefined;\nexport function ensureNodeArray<T extends MetaNode>(item: T[] | readonly T[] | TS.NodeArray<T> | undefined, factory: TS.NodeFactory): TS.NodeArray<T> | undefined {\n\tif (item == null || isNodeArray(item)) return item;\n\treturn factory.createNodeArray(item);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport {ensureNodeArray} from \"./util/ensure-node-array.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneConstructorTypeNode(node: TS.ConstructorTypeNode, options: CloneNodeVisitorOptions<TS.ConstructorTypeNode>): TS.ConstructorTypeNode {\n\tconst updatedNode = options.factory.createConstructorTypeNode(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"typeParameters\", options.nextNodes(node.typeParameters), node.typeParameters),\n\t\toptions.hook(\"parameters\", options.nextNodes(node.parameters), node.parameters),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type)\n\t) as Mutable<TS.ConstructorTypeNode>;\n\n\t// Make sure to also update the modifiers. The constructor function doesn't support this.\n\tupdatedNode.modifiers = ensureNodeArray(options.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers), options.factory);\n\treturn updatedNode;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTypeReferenceNode(node: TS.TypeReferenceNode, options: CloneNodeVisitorOptions<TS.TypeReferenceNode>): TS.TypeReferenceNode {\n\treturn options.factory.createTypeReferenceNode(\n\t\toptions.hook(\"typeName\", options.nextNode(node.typeName), node.typeName),\n\t\toptions.hook(\"typeArguments\", options.nextNodes(node.typeArguments), node.typeArguments)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTypePredicateNode(node: TS.TypePredicateNode, options: CloneNodeVisitorOptions<TS.TypePredicateNode>): TS.TypePredicateNode {\n\treturn options.factory.createTypePredicateNode(\n\t\toptions.hook(\"assertsModifier\", options.nextNode(node.assertsModifier), node.assertsModifier),\n\t\toptions.hook(\"parameterName\", options.nextNode(node.parameterName), node.parameterName),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneSourceFile(node: TS.SourceFile, options: CloneNodeVisitorOptions<TS.SourceFile>): TS.SourceFile {\n\t// Support TypeScript 3.x which uses updateSourceFileNode, whereas TypeScript 4.x uses updateSourceFile\n\tconst updatedSourceFile = options.factory.updateSourceFile(\n\t\tnode,\n\t\toptions.hook(\"statements\", options.nextNodes(node.statements), node.statements),\n\t\tnode.isDeclarationFile,\n\t\tnode.referencedFiles,\n\t\tnode.typeReferenceDirectives,\n\t\tnode.hasNoDefaultLib,\n\t\tnode.libReferenceDirectives\n\t);\n\n\t(updatedSourceFile as Mutable<TS.SourceFile>).pos = -1;\n\t(updatedSourceFile as Mutable<TS.SourceFile>).end = -1;\n\treturn updatedSourceFile;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTypeQueryNode(node: TS.TypeQueryNode, options: CloneNodeVisitorOptions<TS.TypeQueryNode>): TS.TypeQueryNode {\n\treturn options.factory.createTypeQueryNode(options.hook(\"exprName\", options.nextNode(node.exprName), node.exprName));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTypeLiteralNode(node: TS.TypeLiteralNode, options: CloneNodeVisitorOptions<TS.TypeLiteralNode>): TS.TypeLiteralNode {\n\treturn options.factory.createTypeLiteralNode(options.hook(\"members\", options.nextNodes(node.members), node.members));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneArrayTypeNode(node: TS.ArrayTypeNode, options: CloneNodeVisitorOptions<TS.ArrayTypeNode>): TS.ArrayTypeNode {\n\treturn options.factory.createArrayTypeNode(options.hook(\"elementType\", options.nextNode(node.elementType), node.elementType));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTupleTypeNode(node: TS.TupleTypeNode, options: CloneNodeVisitorOptions<TS.TupleTypeNode>): TS.TupleTypeNode {\n\tif (\"elementTypes\" in node) {\n\t\tconst castNode = node as TS.TupleTypeNode & {elementTypes: TS.NodeArray<TS.TypeNode | TS.NamedTupleMember>};\n\t\treturn options.factory.createTupleTypeNode(options.hook(\"elements\", options.nextNodes(castNode.elementTypes), castNode.elementTypes));\n\t} else {\n\t\treturn options.factory.createTupleTypeNode(options.hook(\"elements\", options.nextNodes(node.elements), node.elements));\n\t}\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneOptionalTypeNode(node: TS.OptionalTypeNode, options: CloneNodeVisitorOptions<TS.OptionalTypeNode>): TS.OptionalTypeNode {\n\treturn options.factory.createOptionalTypeNode(options.hook(\"type\", options.nextNode(node.type), node.type));\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is an OptionalTypeNode\n */\nexport function isOptionalTypeNode(node: MetaNode, typescript: typeof TS): node is TS.OptionalTypeNode {\n\t// TypeScript 4.x\n\tif (\"isOptionalTypeNode\" in typescript) {\n\t\treturn typescript.isOptionalTypeNode(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.OptionalType;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneRestTypeNode(node: TS.RestTypeNode, options: CloneNodeVisitorOptions<TS.RestTypeNode>): TS.RestTypeNode {\n\treturn options.factory.createRestTypeNode(options.hook(\"type\", options.nextNode(node.type), node.type));\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a RestTypeNode\n */\nexport function isRestTypeNode(node: MetaNode, typescript: typeof TS): node is TS.RestTypeNode {\n\t// TypeScript 4.x\n\tif (\"isRestTypeNode\" in typescript) {\n\t\treturn typescript.isRestTypeNode(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.RestType;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneUnionTypeNode(node: TS.UnionTypeNode, options: CloneNodeVisitorOptions<TS.UnionTypeNode>): TS.UnionTypeNode {\n\treturn options.factory.createUnionTypeNode(options.hook(\"types\", options.nextNodes(node.types), node.types));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneIntersectionTypeNode(node: TS.IntersectionTypeNode, options: CloneNodeVisitorOptions<TS.IntersectionTypeNode>): TS.IntersectionTypeNode {\n\treturn options.factory.createIntersectionTypeNode(options.hook(\"types\", options.nextNodes(node.types), node.types));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneLiteralTypeNode(node: TS.LiteralTypeNode, options: CloneNodeVisitorOptions<TS.LiteralTypeNode>): TS.LiteralTypeNode {\n\treturn options.factory.createLiteralTypeNode(options.hook(\"literal\", options.nextNode(node.literal), node.literal));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneStringLiteral(node: TS.StringLiteral, options: CloneNodeVisitorOptions<TS.StringLiteral>): TS.StringLiteral {\n\treturn options.factory.createStringLiteral(options.hook(\"text\", node.text, node.text));\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is either the boolean Literal 'true' or 'false'\n */\nexport function isBooleanLiteral(node: MetaNode, typescript: typeof TS): node is TS.BooleanLiteral {\n\tswitch (node.kind) {\n\t\tcase typescript.SyntaxKind.TrueKeyword:\n\t\tcase typescript.SyntaxKind.FalseKeyword:\n\t\t\treturn true;\n\t\tdefault:\n\t\t\treturn false;\n\t}\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneBooleanLiteral(node: TS.BooleanLiteral, options: CloneNodeVisitorOptions<TS.BooleanLiteral>): TS.BooleanLiteral {\n\tif (node.kind === options.typescript.SyntaxKind.TrueKeyword) {\n\t\treturn options.factory.createTrue();\n\t}\n\treturn options.factory.createFalse();\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function clonePrefixUnaryExpression(node: TS.PrefixUnaryExpression, options: CloneNodeVisitorOptions<TS.PrefixUnaryExpression>): TS.PrefixUnaryExpression {\n\treturn options.factory.createPrefixUnaryExpression(options.hook(\"operator\", node.operator, node.operator), options.hook(\"operand\", options.nextNode(node.operand), node.operand));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneRegularExpressionLiteral(node: TS.RegularExpressionLiteral, options: CloneNodeVisitorOptions<TS.RegularExpressionLiteral>): TS.RegularExpressionLiteral {\n\treturn options.factory.createRegularExpressionLiteral(options.hook(\"text\", node.text, node.text));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneNoSubstitutionTemplateLiteral(\n\tnode: TS.NoSubstitutionTemplateLiteral,\n\toptions: CloneNodeVisitorOptions<TS.NoSubstitutionTemplateLiteral>\n): TS.NoSubstitutionTemplateLiteral {\n\treturn options.factory.createNoSubstitutionTemplateLiteral(options.hook(\"text\", node.text, node.text), options.hook(\"rawText\", node.rawText, node.text));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneNumericLiteral(node: TS.NumericLiteral, options: CloneNodeVisitorOptions<TS.NumericLiteral>): TS.NumericLiteral {\n\treturn options.factory.createNumericLiteral(options.hook(\"text\", node.text, node.text));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneBigIntLiteral(node: TS.BigIntLiteral, options: CloneNodeVisitorOptions<TS.BigIntLiteral>): TS.BigIntLiteral {\n\treturn options.factory.createBigIntLiteral(options.hook(\"text\", node.text, node.text));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneConditionalTypeNode(node: TS.ConditionalTypeNode, options: CloneNodeVisitorOptions<TS.ConditionalTypeNode>): TS.ConditionalTypeNode {\n\treturn options.factory.createConditionalTypeNode(\n\t\toptions.hook(\"checkType\", options.nextNode(node.checkType), node.checkType),\n\t\toptions.hook(\"extendsType\", options.nextNode(node.extendsType), node.extendsType),\n\t\toptions.hook(\"trueType\", options.nextNode(node.trueType), node.trueType),\n\t\toptions.hook(\"falseType\", options.nextNode(node.falseType), node.falseType)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneInferTypeNode(node: TS.InferTypeNode, options: CloneNodeVisitorOptions<TS.InferTypeNode>): TS.InferTypeNode {\n\treturn options.factory.createInferTypeNode(options.hook(\"typeParameter\", options.nextNode(node.typeParameter), node.typeParameter));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneBlock(node: TS.Block, options: CloneNodeVisitorOptions<TS.Block>): TS.Block {\n\treturn options.factory.createBlock(options.hook(\"statements\", options.nextNodes(node.statements), node.statements));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneThrowStatement(node: TS.ThrowStatement, options: CloneNodeVisitorOptions<TS.ThrowStatement>): TS.ThrowStatement {\n\treturn options.factory.createThrowStatement(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneNewExpression(node: TS.NewExpression, options: CloneNodeVisitorOptions<TS.NewExpression>): TS.NewExpression {\n\treturn options.factory.createNewExpression(\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"typeArguments\", options.nextNodes(node.typeArguments), node.typeArguments),\n\t\toptions.hook(\"arguments\", options.nextNodes(node.arguments), node.arguments)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneCallExpression(node: TS.CallExpression, options: CloneNodeVisitorOptions<TS.CallExpression>): TS.CallExpression {\n\tconst clonedCallExpression = options.factory.createCallExpression(\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"typeArguments\", options.nextNodes(node.typeArguments), node.typeArguments),\n\t\toptions.hook(\"arguments\", options.nextNodes(node.arguments), node.arguments)\n\t);\n\n\t// createCallExpression may wrap the arguments in parentheses. We want to make sure that we're producing identical clones here,\n\t// so if the arguments of the new CallExpression has a ParenthesizedExpression that weren't there before, remove it.\n\tfor (let i = 0; i < clonedCallExpression.arguments.length; i++) {\n\t\tconst argument = clonedCallExpression.arguments[i];\n\t\tconst nodeArgument = node.arguments[i];\n\n\t\tif (nodeArgument != null && argument != null && !options.typescript.isParenthesizedExpression(nodeArgument) && options.typescript.isParenthesizedExpression(argument)) {\n\t\t\t(clonedCallExpression.arguments[i] as Mutable<TS.Expression>) = argument.expression;\n\t\t}\n\t}\n\n\treturn clonedCallExpression;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneExpressionStatement(node: TS.ExpressionStatement, options: CloneNodeVisitorOptions<TS.ExpressionStatement>): TS.ExpressionStatement {\n\treturn options.factory.createExpressionStatement(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneExpressionWithTypeArguments(\n\tnode: TS.ExpressionWithTypeArguments,\n\toptions: CloneNodeVisitorOptions<TS.ExpressionWithTypeArguments>\n): TS.ExpressionWithTypeArguments {\n\treturn options.factory.createExpressionWithTypeArguments(\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"typeArguments\", options.nextNodes(node.typeArguments), node.typeArguments)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function clonePropertyAccessExpression(node: TS.PropertyAccessExpression, options: CloneNodeVisitorOptions<TS.PropertyAccessExpression>): TS.PropertyAccessExpression {\n\treturn options.factory.createPropertyAccessExpression(\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneElementAccessExpression(node: TS.ElementAccessExpression, options: CloneNodeVisitorOptions<TS.ElementAccessExpression>): TS.ElementAccessExpression {\n\treturn options.factory.createElementAccessExpression(\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"argumentExpression\", options.nextNode(node.argumentExpression), node.argumentExpression)\n\t);\n}\n","import type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {TS} from \"./type/ts.js\";\n\nexport function cloneArrayLiteralExpression(node: TS.ArrayLiteralExpression, options: CloneNodeVisitorOptions<TS.ArrayLiteralExpression>): TS.ArrayLiteralExpression {\n\treturn options.factory.createArrayLiteralExpression(options.hook(\"elements\", options.nextNodes(node.elements), node.elements));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneObjectLiteralExpression(node: TS.ObjectLiteralExpression, options: CloneNodeVisitorOptions<TS.ObjectLiteralExpression>): TS.ObjectLiteralExpression {\n\treturn options.factory.createObjectLiteralExpression(options.hook(\"properties\", options.nextNodes(node.properties), node.properties));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTemplateExpression(node: TS.TemplateExpression, options: CloneNodeVisitorOptions<TS.TemplateExpression>): TS.TemplateExpression {\n\treturn options.factory.createTemplateExpression(\n\t\toptions.hook(\"head\", options.nextNode(node.head), node.head),\n\t\toptions.hook(\"templateSpans\", options.nextNodes(node.templateSpans), node.templateSpans)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTemplateSpan(node: TS.TemplateSpan, options: CloneNodeVisitorOptions<TS.TemplateSpan>): TS.TemplateSpan {\n\treturn options.factory.createTemplateSpan(\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"literal\", options.nextNode(node.literal), node.literal)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTemplateHead(node: TS.TemplateHead, options: CloneNodeVisitorOptions<TS.TemplateHead>): TS.TemplateHead {\n\treturn options.factory.createTemplateHead(options.hook(\"text\", node.text, node.text), options.hook(\"rawText\", node.rawText, node.rawText));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTemplateMiddle(node: TS.TemplateMiddle, options: CloneNodeVisitorOptions<TS.TemplateMiddle>): TS.TemplateMiddle {\n\treturn options.factory.createTemplateMiddle(options.hook(\"text\", node.text, node.text), options.hook(\"rawText\", node.rawText, node.rawText));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTemplateTail(node: TS.TemplateTail, options: CloneNodeVisitorOptions<TS.TemplateTail>): TS.TemplateTail {\n\treturn options.factory.createTemplateTail(options.hook(\"text\", node.text, node.text), options.hook(\"rawText\", node.rawText, node.rawText));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneConditionalExpression(node: TS.ConditionalExpression, options: CloneNodeVisitorOptions<TS.ConditionalExpression>): TS.ConditionalExpression {\n\treturn options.factory.createConditionalExpression(\n\t\toptions.hook(\"condition\", options.nextNode(node.condition), node.condition),\n\t\toptions.hook(\"questionToken\", options.nextNode(node.questionToken), node.questionToken),\n\t\toptions.hook(\"whenTrue\", options.nextNode(node.whenTrue), node.whenTrue),\n\t\toptions.hook(\"colonToken\", options.nextNode(node.colonToken), node.colonToken),\n\t\toptions.hook(\"whenFalse\", options.nextNode(node.whenFalse), node.whenFalse)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneBinaryExpression(node: TS.BinaryExpression, options: CloneNodeVisitorOptions<TS.BinaryExpression>): TS.BinaryExpression {\n\treturn options.factory.createBinaryExpression(\n\t\toptions.hook(\"left\", options.nextNode(node.left), node.left),\n\t\toptions.hook(\"operatorToken\", options.nextNode(node.operatorToken), node.operatorToken),\n\t\toptions.hook(\"right\", options.nextNode(node.right), node.right)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneParenthesizedExpression(node: TS.ParenthesizedExpression, options: CloneNodeVisitorOptions<TS.ParenthesizedExpression>): TS.ParenthesizedExpression {\n\treturn options.factory.createParenthesizedExpression(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneParenthesizedTypeNode(node: TS.ParenthesizedTypeNode, options: CloneNodeVisitorOptions<TS.ParenthesizedTypeNode>): TS.ParenthesizedTypeNode {\n\treturn options.factory.createParenthesizedType(options.hook(\"type\", options.nextNode(node.type), node.type));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneArrowFunction(node: TS.ArrowFunction, options: CloneNodeVisitorOptions<TS.ArrowFunction>): TS.ArrowFunction {\n\treturn options.factory.createArrowFunction(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"typeParameters\", options.nextNodes(node.typeParameters), node.typeParameters),\n\t\toptions.hook(\"parameters\", options.nextNodes(node.parameters), node.parameters),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type),\n\t\toptions.hook(\"equalsGreaterThanToken\", options.nextNode(node.equalsGreaterThanToken), node.equalsGreaterThanToken),\n\t\toptions.hook(\"body\", options.nextNode(node.body), node.body)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport {getModifierLikes} from \"./util/get-modifier-likes.js\";\n\nexport function cloneClassDeclaration(node: TS.ClassDeclaration, options: CloneNodeVisitorOptions<TS.ClassDeclaration>): TS.ClassDeclaration {\n\tconst modifierLikes = getModifierLikes(node);\n\treturn options.factory.createClassDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(modifierLikes), modifierLikes),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"typeParameters\", options.nextNodes(node.typeParameters), node.typeParameters),\n\t\toptions.hook(\"heritageClauses\", options.nextNodes(node.heritageClauses), node.heritageClauses),\n\t\toptions.hook(\"members\", options.nextNodes(node.members), node.members)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport {getModifierLikes} from \"./util/get-modifier-likes.js\";\n\nexport function cloneClassExpression(node: TS.ClassExpression, options: CloneNodeVisitorOptions<TS.ClassExpression>): TS.ClassExpression {\n\tconst modifierLikes = getModifierLikes(node);\n\treturn options.factory.createClassExpression(\n\t\toptions.hook(\"modifiers\", options.nextNodes(modifierLikes), modifierLikes),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"typeParameters\", options.nextNodes(node.typeParameters), node.typeParameters),\n\t\toptions.hook(\"heritageClauses\", options.nextNodes(node.heritageClauses), node.heritageClauses),\n\t\toptions.hook(\"members\", options.nextNodes(node.members), node.members)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneEnumDeclaration(node: TS.EnumDeclaration, options: CloneNodeVisitorOptions<TS.EnumDeclaration>): TS.EnumDeclaration {\n\treturn options.factory.createEnumDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"members\", options.nextNodes(node.members), node.members)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneInterfaceDeclaration(node: TS.InterfaceDeclaration, options: CloneNodeVisitorOptions<TS.InterfaceDeclaration>): TS.InterfaceDeclaration {\n\treturn options.factory.createInterfaceDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"typeParameters\", options.nextNodes(node.typeParameters), node.typeParameters),\n\t\toptions.hook(\"heritageClauses\", options.nextNodes(node.heritageClauses), node.heritageClauses),\n\t\toptions.hook(\"members\", options.nextNodes(node.members), node.members)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneEnumMember(node: TS.EnumMember, options: CloneNodeVisitorOptions<TS.EnumMember>): TS.EnumMember {\n\treturn options.factory.createEnumMember(\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"initializer\", options.nextNode(node.initializer), node.initializer)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneHeritageClause(node: TS.HeritageClause, options: CloneNodeVisitorOptions<TS.HeritageClause>): TS.HeritageClause {\n\treturn options.factory.createHeritageClause(options.hook(\"token\", node.token, node.token), options.hook(\"types\", options.nextNodes(node.types), node.types));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneEmptyStatement(_node: TS.EmptyStatement, options: CloneNodeVisitorOptions<TS.EmptyStatement>): TS.EmptyStatement {\n\treturn options.factory.createEmptyStatement();\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTypeOperatorNode(node: TS.TypeOperatorNode, options: CloneNodeVisitorOptions<TS.TypeOperatorNode>): TS.TypeOperatorNode {\n\treturn options.factory.createTypeOperatorNode(options.hook(\"operator\", node.operator, node.operator), options.hook(\"type\", options.nextNode(node.type), node.type));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneIndexedAccessTypeNode(node: TS.IndexedAccessTypeNode, options: CloneNodeVisitorOptions<TS.IndexedAccessTypeNode>): TS.IndexedAccessTypeNode {\n\treturn options.factory.createIndexedAccessTypeNode(\n\t\toptions.hook(\"objectType\", options.nextNode(node.objectType), node.objectType),\n\t\toptions.hook(\"indexType\", options.nextNode(node.indexType), node.indexType)\n\t);\n}\n","import type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {TS} from \"./type/ts.js\";\nimport {ensureNodeArray} from \"./util/ensure-node-array.js\";\n\nexport function cloneMappedTypeNode(node: TS.MappedTypeNode, options: CloneNodeVisitorOptions<TS.MappedTypeNode>): TS.MappedTypeNode {\n\treturn options.factory.createMappedTypeNode(\n\t\toptions.hook(\"readonlyToken\", options.nextNode(node.readonlyToken), node.readonlyToken),\n\t\toptions.hook(\"typeParameter\", options.nextNode(node.typeParameter), node.typeParameter),\n\t\toptions.hook(\"nameType\", options.nextNode(node.nameType), node.nameType),\n\t\toptions.hook(\"questionToken\", options.nextNode(node.questionToken), node.questionToken),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type),\n\t\tensureNodeArray(options.hook(\"members\", options.nextNodes(node.members), node.members), options.factory)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneOmittedExpression(_node: TS.OmittedExpression, options: CloneNodeVisitorOptions<TS.OmittedExpression>): TS.OmittedExpression {\n\treturn options.factory.createOmittedExpression();\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function clonePartiallyEmittedExpression(\n\tnode: TS.PartiallyEmittedExpression,\n\toptions: CloneNodeVisitorOptions<TS.PartiallyEmittedExpression>\n): TS.PartiallyEmittedExpression {\n\treturn options.factory.createPartiallyEmittedExpression(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a PartiallyEmittedExpression\n */\nexport function isPartiallyEmittedExpression(node: MetaNode, typescript: typeof TS): node is TS.PartiallyEmittedExpression {\n\t// TypeScript 4.x\n\tif (\"isPartiallyEmittedExpression\" in typescript) {\n\t\treturn typescript.isPartiallyEmittedExpression(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.PartiallyEmittedExpression;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function clonePostfixUnaryExpression(node: TS.PostfixUnaryExpression, options: CloneNodeVisitorOptions<TS.PostfixUnaryExpression>): TS.PostfixUnaryExpression {\n\treturn options.factory.createPostfixUnaryExpression(\n\t\toptions.hook(\"operand\", options.nextNode(node.operand), node.operand),\n\t\toptions.hook(\"operator\", node.operator, node.operator)\n\t);\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is the literal 'null'\n */\nexport function isNullLiteral(node: MetaNode, typescript: typeof TS): node is TS.NullLiteral {\n\treturn node.kind === typescript.SyntaxKind.NullKeyword;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneNullLiteral(_node: TS.NullLiteral, options: CloneNodeVisitorOptions<TS.NullLiteral>): TS.NullLiteral {\n\treturn options.factory.createNull();\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a ThisExpression\n */\nexport function isThisExpression(node: MetaNode, typescript: typeof TS): node is TS.ThisExpression {\n\treturn node.kind === typescript.SyntaxKind.ThisKeyword;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneThisExpression(_node: TS.ThisExpression, options: CloneNodeVisitorOptions<TS.ThisExpression>): TS.ThisExpression {\n\treturn options.factory.createThis();\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneReturnStatement(node: TS.ReturnStatement, options: CloneNodeVisitorOptions<TS.ReturnStatement>): TS.ReturnStatement {\n\treturn options.factory.createReturnStatement(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\nexport function isSuperExpression(node: MetaNode, typescript: typeof TS): node is TS.SuperExpression {\n\treturn node.kind === typescript.SyntaxKind.SuperKeyword;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneSuperExpression(_node: TS.SuperExpression, options: CloneNodeVisitorOptions<TS.SuperExpression>): TS.SuperExpression {\n\treturn options.factory.createSuper();\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneDeleteExpression(node: TS.DeleteExpression, options: CloneNodeVisitorOptions<TS.DeleteExpression>): TS.DeleteExpression {\n\treturn options.factory.createDeleteExpression(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneAsExpression(node: TS.AsExpression, options: CloneNodeVisitorOptions<TS.AsExpression>): TS.AsExpression {\n\treturn options.factory.createAsExpression(\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTypeAssertion(node: TS.TypeAssertion, options: CloneNodeVisitorOptions<TS.TypeAssertion>): TS.TypeAssertion {\n\treturn options.factory.createTypeAssertion(\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type),\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneAwaitExpression(node: TS.AwaitExpression, options: CloneNodeVisitorOptions<TS.AwaitExpression>): TS.AwaitExpression {\n\treturn options.factory.createAwaitExpression(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneYieldExpression(node: TS.YieldExpression, options: CloneNodeVisitorOptions<TS.YieldExpression>): TS.YieldExpression {\n\treturn options.factory.createYieldExpression(\n\t\toptions.hook(\"asteriskToken\", options.nextNode(node.asteriskToken), node.asteriskToken)!,\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression)!\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneForOfStatement(node: TS.ForOfStatement, options: CloneNodeVisitorOptions<TS.ForOfStatement>): TS.ForOfStatement {\n\treturn options.factory.createForOfStatement(\n\t\toptions.hook(\"awaitModifier\", options.nextNode(node.awaitModifier), node.awaitModifier),\n\t\toptions.hook(\"initializer\", options.nextNode(node.initializer), node.initializer),\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"statement\", options.nextNode(node.statement), node.statement)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneForInStatement(node: TS.ForInStatement, options: CloneNodeVisitorOptions<TS.ForInStatement>): TS.ForInStatement {\n\treturn options.factory.createForInStatement(\n\t\toptions.hook(\"initializer\", options.nextNode(node.initializer), node.initializer),\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"statement\", options.nextNode(node.statement), node.statement)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneForStatement(node: TS.ForStatement, options: CloneNodeVisitorOptions<TS.ForStatement>): TS.ForStatement {\n\treturn options.factory.createForStatement(\n\t\toptions.hook(\"initializer\", options.nextNode(node.initializer), node.initializer),\n\t\toptions.hook(\"condition\", options.nextNode(node.condition), node.condition),\n\t\toptions.hook(\"incrementor\", options.nextNode(node.incrementor), node.incrementor),\n\t\toptions.hook(\"statement\", options.nextNode(node.statement), node.statement)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneWhileStatement(node: TS.WhileStatement, options: CloneNodeVisitorOptions<TS.WhileStatement>): TS.WhileStatement {\n\treturn options.factory.createWhileStatement(\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"statement\", options.nextNode(node.statement), node.statement)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneLabeledStatement(node: TS.LabeledStatement, options: CloneNodeVisitorOptions<TS.LabeledStatement>): TS.LabeledStatement {\n\treturn options.factory.createLabeledStatement(\n\t\toptions.hook(\"label\", options.nextNode(node.label), node.label),\n\t\toptions.hook(\"statement\", options.nextNode(node.statement), node.statement)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneBreakStatement(node: TS.BreakStatement, options: CloneNodeVisitorOptions<TS.BreakStatement>): TS.BreakStatement {\n\treturn options.factory.createBreakStatement(options.hook(\"label\", options.nextNode(node.label), node.label));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneContinueStatement(node: TS.ContinueStatement, options: CloneNodeVisitorOptions<TS.ContinueStatement>): TS.ContinueStatement {\n\treturn options.factory.createContinueStatement(options.hook(\"label\", options.nextNode(node.label), node.label));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneIfStatement(node: TS.IfStatement, options: CloneNodeVisitorOptions<TS.IfStatement>): TS.IfStatement {\n\treturn options.factory.createIfStatement(\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"thenStatement\", options.nextNode(node.thenStatement), node.thenStatement),\n\t\toptions.hook(\"elseStatement\", options.nextNode(node.elseStatement), node.elseStatement)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneDoStatement(node: TS.DoStatement, options: CloneNodeVisitorOptions<TS.DoStatement>): TS.DoStatement {\n\treturn options.factory.createDoStatement(\n\t\toptions.hook(\"statement\", options.nextNode(node.statement), node.statement),\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneNonNullExpression(node: TS.NonNullExpression, options: CloneNodeVisitorOptions<TS.NonNullExpression>): TS.NonNullExpression {\n\treturn options.factory.createNonNullExpression(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTypeOfExpression(node: TS.TypeOfExpression, options: CloneNodeVisitorOptions<TS.TypeOfExpression>): TS.TypeOfExpression {\n\treturn options.factory.createTypeOfExpression(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneVoidExpression(node: TS.VoidExpression, options: CloneNodeVisitorOptions<TS.VoidExpression>): TS.VoidExpression {\n\treturn options.factory.createVoidExpression(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneFunctionExpression(node: TS.FunctionExpression, options: CloneNodeVisitorOptions<TS.FunctionExpression>): TS.FunctionExpression {\n\treturn options.factory.createFunctionExpression(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"asteriskToken\", options.nextNode(node.asteriskToken), node.asteriskToken),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"typeParameters\", options.nextNodes(node.typeParameters), node.typeParameters),\n\t\toptions.hook(\"parameters\", options.nextNodes(node.parameters), node.parameters),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type),\n\t\toptions.hook(\"body\", options.nextNode(node.body), node.body)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneSpreadElement(node: TS.SpreadElement, options: CloneNodeVisitorOptions<TS.SpreadElement>): TS.SpreadElement {\n\treturn options.factory.createSpreadElement(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTaggedTemplateExpression(node: TS.TaggedTemplateExpression, options: CloneNodeVisitorOptions<TS.TaggedTemplateExpression>): TS.TaggedTemplateExpression {\n\treturn options.factory.createTaggedTemplateExpression(\n\t\toptions.hook(\"tag\", options.nextNode(node.tag), node.tag),\n\t\toptions.hook(\"typeArguments\", options.nextNodes(node.typeArguments), node.typeArguments),\n\t\toptions.hook(\"template\", options.nextNode(node.template), node.template)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneMetaProperty(node: TS.MetaProperty, options: CloneNodeVisitorOptions<TS.MetaProperty>): TS.MetaProperty {\n\treturn options.factory.createMetaProperty(options.hook(\"keywordToken\", node.keywordToken, node.keywordToken), options.hook(\"name\", options.nextNode(node.name), node.name));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneJsxElement(node: TS.JsxElement, options: CloneNodeVisitorOptions<TS.JsxElement>): TS.JsxElement {\n\treturn options.factory.createJsxElement(\n\t\toptions.hook(\"openingElement\", options.nextNode(node.openingElement), node.openingElement),\n\t\toptions.hook(\"children\", options.nextNodes(node.children), node.children),\n\t\toptions.hook(\"closingElement\", options.nextNode(node.closingElement), node.closingElement)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneJsxAttributes(node: TS.JsxAttributes, options: CloneNodeVisitorOptions<TS.JsxAttributes>): TS.JsxAttributes {\n\treturn options.factory.createJsxAttributes(options.hook(\"properties\", options.nextNodes(node.properties), node.properties));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneJsxOpeningElement(node: TS.JsxOpeningElement, options: CloneNodeVisitorOptions<TS.JsxOpeningElement>): TS.JsxOpeningElement {\n\treturn options.factory.createJsxOpeningElement(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"typeArguments\", options.nextNodes(node.typeArguments), node.typeArguments),\n\t\toptions.hook(\"attributes\", options.nextNode(node.attributes), node.attributes)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneJsxSelfClosingElement(node: TS.JsxSelfClosingElement, options: CloneNodeVisitorOptions<TS.JsxSelfClosingElement>): TS.JsxSelfClosingElement {\n\treturn options.factory.createJsxSelfClosingElement(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"typeArguments\", options.nextNodes(node.typeArguments), node.typeArguments),\n\t\toptions.hook(\"attributes\", options.nextNode(node.attributes), node.attributes)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneJsxFragment(node: TS.JsxFragment, options: CloneNodeVisitorOptions<TS.JsxFragment>): TS.JsxFragment {\n\treturn options.factory.createJsxFragment(\n\t\toptions.hook(\"openingFragment\", options.nextNode(node.openingFragment), node.openingFragment),\n\t\toptions.hook(\"children\", options.nextNodes(node.children), node.children),\n\t\toptions.hook(\"closingFragment\", options.nextNode(node.closingFragment), node.closingFragment)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneJsxOpeningFragment(_node: TS.JsxOpeningFragment, options: CloneNodeVisitorOptions<TS.JsxOpeningFragment>): TS.JsxOpeningFragment {\n\treturn options.factory.createJsxOpeningFragment();\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneJsxClosingFragment(_node: TS.JsxClosingFragment, options: CloneNodeVisitorOptions<TS.JsxClosingFragment>): TS.JsxClosingFragment {\n\treturn options.factory.createJsxJsxClosingFragment();\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneJsxAttribute(node: TS.JsxAttribute, options: CloneNodeVisitorOptions<TS.JsxAttribute>): TS.JsxAttribute {\n\treturn options.factory.createJsxAttribute(\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"initializer\", options.nextNode(node.initializer), node.initializer)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneJsxSpreadAttribute(node: TS.JsxSpreadAttribute, options: CloneNodeVisitorOptions<TS.JsxSpreadAttribute>): TS.JsxSpreadAttribute {\n\treturn options.factory.createJsxSpreadAttribute(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneJsxClosingElement(node: TS.JsxClosingElement, options: CloneNodeVisitorOptions<TS.JsxClosingElement>): TS.JsxClosingElement {\n\treturn options.factory.createJsxClosingElement(options.hook(\"tagName\", options.nextNode(node.tagName), node.tagName));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneJsxExpression(node: TS.JsxExpression, options: CloneNodeVisitorOptions<TS.JsxExpression>): TS.JsxExpression {\n\treturn options.factory.createJsxExpression(\n\t\toptions.hook(\"dotDotDotToken\", options.nextNode(node.dotDotDotToken), node.dotDotDotToken),\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneJsxText(node: TS.JsxText, options: CloneNodeVisitorOptions<TS.JsxText>): TS.JsxText {\n\treturn options.factory.createJsxText(\n\t\toptions.hook(\"text\", node.text, node.text),\n\t\toptions.hook(\"containsOnlyTriviaWhiteSpaces\", node.containsOnlyTriviaWhiteSpaces, node.containsOnlyTriviaWhiteSpaces)\n\t);\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a NotEmittedStatement\n */\nexport function isNotEmittedStatement(node: MetaNode, typescript: typeof TS): node is TS.NotEmittedStatement {\n\t// TypeScript 4.x\n\tif (\"isNotEmittedStatement\" in typescript) {\n\t\treturn typescript.isNotEmittedStatement(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.NotEmittedStatement;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneNotEmittedStatement(node: TS.NotEmittedStatement, options: CloneNodeVisitorOptions<TS.NotEmittedStatement>): TS.NotEmittedStatement {\n\treturn options.factory.createNotEmittedStatement(node);\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a CommaListExpression\n */\nexport function isCommaListExpression(node: MetaNode, typescript: typeof TS): node is TS.CommaListExpression {\n\t// TypeScript 4.x\n\tif (\"isCommaListExpression\" in typescript) {\n\t\treturn typescript.isCommaListExpression(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.CommaListExpression;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneCommaListExpression(node: TS.CommaListExpression, options: CloneNodeVisitorOptions<TS.CommaListExpression>): TS.CommaListExpression {\n\treturn options.factory.createCommaListExpression(options.hook(\"elements\", options.nextNodes(node.elements), node.elements));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneDebuggerStatement(_node: TS.DebuggerStatement, options: CloneNodeVisitorOptions<TS.DebuggerStatement>): TS.DebuggerStatement {\n\treturn options.factory.createDebuggerStatement();\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneWithStatement(node: TS.WithStatement, options: CloneNodeVisitorOptions<TS.WithStatement>): TS.WithStatement {\n\treturn options.factory.createWithStatement(\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"statement\", options.nextNode(node.statement), node.statement)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneSwitchStatement(node: TS.SwitchStatement, options: CloneNodeVisitorOptions<TS.SwitchStatement>): TS.SwitchStatement {\n\treturn options.factory.createSwitchStatement(\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"caseBlock\", options.nextNode(node.caseBlock), node.caseBlock)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneCaseBlock(node: TS.CaseBlock, options: CloneNodeVisitorOptions<TS.CaseBlock>): TS.CaseBlock {\n\treturn options.factory.createCaseBlock(options.hook(\"clauses\", options.nextNodes(node.clauses), node.clauses));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneCaseClause(node: TS.CaseClause, options: CloneNodeVisitorOptions<TS.CaseClause>): TS.CaseClause {\n\treturn options.factory.createCaseClause(\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"statements\", options.nextNodes(node.statements), node.statements)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneDefaultClause(node: TS.DefaultClause, options: CloneNodeVisitorOptions<TS.DefaultClause>): TS.DefaultClause {\n\treturn options.factory.createDefaultClause(options.hook(\"statements\", options.nextNodes(node.statements), node.statements));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTryStatement(node: TS.TryStatement, options: CloneNodeVisitorOptions<TS.TryStatement>): TS.TryStatement {\n\treturn options.factory.createTryStatement(\n\t\toptions.hook(\"tryBlock\", options.nextNode(node.tryBlock), node.tryBlock),\n\t\toptions.hook(\"catchClause\", options.nextNode(node.catchClause), node.catchClause),\n\t\toptions.hook(\"finallyBlock\", options.nextNode(node.finallyBlock), node.finallyBlock)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneCatchClause(node: TS.CatchClause, options: CloneNodeVisitorOptions<TS.CatchClause>): TS.CatchClause {\n\treturn options.factory.createCatchClause(\n\t\toptions.hook(\"variableDeclaration\", options.nextNode(node.variableDeclaration), node.variableDeclaration),\n\t\toptions.hook(\"block\", options.nextNode(node.block), node.block)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneModuleDeclaration(node: TS.ModuleDeclaration, options: CloneNodeVisitorOptions<TS.ModuleDeclaration>): TS.ModuleDeclaration {\n\treturn options.factory.createModuleDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"body\", options.nextNode(node.body), node.body),\n\t\toptions.hook(\"flags\", node.flags, node.flags)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneModuleBlock(node: TS.ModuleBlock, options: CloneNodeVisitorOptions<TS.ModuleBlock>): TS.ModuleBlock {\n\treturn options.factory.createModuleBlock(options.hook(\"statements\", options.nextNodes(node.statements), node.statements));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneImportDeclaration(node: TS.ImportDeclaration, options: CloneNodeVisitorOptions<TS.ImportDeclaration>): TS.ImportDeclaration {\n\treturn options.factory.createImportDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"importClause\", options.nextNode(node.importClause), node.importClause),\n\t\toptions.hook(\"moduleSpecifier\", options.nextNode(node.moduleSpecifier), node.moduleSpecifier),\n\t\toptions.hook(\"attributes\", options.nextNode(node.attributes), node.attributes)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneImportEqualsDeclaration(node: TS.ImportEqualsDeclaration, options: CloneNodeVisitorOptions<TS.ImportEqualsDeclaration>): TS.ImportEqualsDeclaration {\n\treturn options.factory.createImportEqualsDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"isTypeOnly\", node.isTypeOnly, node.isTypeOnly),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"moduleReference\", options.nextNode(node.moduleReference), node.moduleReference)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneImportClause(node: TS.ImportClause, options: CloneNodeVisitorOptions<TS.ImportClause>): TS.ImportClause {\n\treturn options.factory.createImportClause(\n\t\toptions.hook(\"isTypeOnly\", node.isTypeOnly, node.isTypeOnly),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"namedBindings\", options.nextNode(node.namedBindings), node.namedBindings)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneNamedImports(node: TS.NamedImports, options: CloneNodeVisitorOptions<TS.NamedImports>): TS.NamedImports {\n\treturn options.factory.createNamedImports(options.hook(\"elements\", options.nextNodes(node.elements), node.elements));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneNamespaceImport(node: TS.NamespaceImport, options: CloneNodeVisitorOptions<TS.NamespaceImport>): TS.NamespaceImport {\n\treturn options.factory.createNamespaceImport(options.hook(\"name\", options.nextNode(node.name), node.name));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneImportSpecifier(node: TS.ImportSpecifier, options: CloneNodeVisitorOptions<TS.ImportSpecifier>): TS.ImportSpecifier {\n\treturn options.factory.createImportSpecifier(\n\t\toptions.hook(\"isTypeOnly\", node.isTypeOnly, node.isTypeOnly),\n\t\toptions.hook(\"propertyName\", options.nextNode(node.propertyName), node.propertyName),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneExternalModuleReference(node: TS.ExternalModuleReference, options: CloneNodeVisitorOptions<TS.ExternalModuleReference>): TS.ExternalModuleReference {\n\treturn options.factory.createExternalModuleReference(options.hook(\"expression\", options.nextNode(node.expression), node.expression));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneNamespaceExportDeclaration(\n\tnode: TS.NamespaceExportDeclaration,\n\toptions: CloneNodeVisitorOptions<TS.NamespaceExportDeclaration>\n): TS.NamespaceExportDeclaration {\n\treturn options.factory.createNamespaceExportDeclaration(options.hook(\"name\", options.nextNode(node.name), node.name));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneExportDeclaration(node: TS.ExportDeclaration, options: CloneNodeVisitorOptions<TS.ExportDeclaration>): TS.ExportDeclaration {\n\treturn options.factory.createExportDeclaration(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"isTypeOnly\", node.isTypeOnly, node.isTypeOnly),\n\t\toptions.hook(\"exportClause\", options.nextNode(node.exportClause), node.exportClause),\n\t\toptions.hook(\"moduleSpecifier\", options.nextNode(node.moduleSpecifier), node.moduleSpecifier),\n\t\toptions.hook(\"attributes\", options.nextNode(node.attributes), node.attributes)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneNamedExports(node: TS.NamedExports, options: CloneNodeVisitorOptions<TS.NamedExports>): TS.NamedExports {\n\treturn options.factory.createNamedExports(options.hook(\"elements\", options.nextNodes(node.elements), node.elements));\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneExportSpecifier(node: TS.ExportSpecifier, options: CloneNodeVisitorOptions<TS.ExportSpecifier>): TS.ExportSpecifier {\n\treturn options.factory.createExportSpecifier(\n\t\toptions.hook(\"isTypeOnly\", node.isTypeOnly, node.isTypeOnly),\n\t\toptions.hook(\"propertyName\", options.nextNode(node.propertyName), node.propertyName),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneExportAssignment(node: TS.ExportAssignment, options: CloneNodeVisitorOptions<TS.ExportAssignment>): TS.ExportAssignment {\n\treturn options.factory.createExportAssignment(\n\t\toptions.hook(\"modifiers\", options.nextNodes(node.modifiers), node.modifiers),\n\t\toptions.hook(\"isExportEquals\", node.isExportEquals, node.isExportEquals),\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression)\n\t);\n}\n","import type {CloneNodeFinalizerCallback, CloneNodeHookFactory, CloneNodeInternalOptions, CloneNodeOptions} from \"../clone-node-options.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\nimport {ensureNodeFactory} from \"compatfactory\";\nimport ts from \"typescript\";\nimport type {TS} from \"../type/ts.js\";\n\nexport function toInternalOptions<T extends MetaNode>(options: Partial<CloneNodeOptions<T>>): CloneNodeInternalOptions<T> {\n\tconst typescript = options.typescript ?? (ts as typeof TS);\n\treturn {\n\t\t...options,\n\t\ttypescript,\n\t\tfactory: ensureNodeFactory(options.factory ?? typescript),\n\t\tsetParents: options.setParents ?? false,\n\t\tsetOriginalNodes: options.setOriginalNodes ?? false,\n\t\tpreserveSymbols: options.preserveSymbols ?? false,\n\t\tpreserveComments: options.preserveComments ?? true,\n\t\tcommentRanges: new Set(),\n\t\tdebug: options.debug ?? false,\n\t\tdepth: 0,\n\t\thook: (options.hook as CloneNodeHookFactory<MetaNode> | undefined) ?? (() => ({})),\n\t\tfinalize: (options.finalize as CloneNodeFinalizerCallback<MetaNode> | undefined) ?? (() => undefined)\n\t};\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocComment\n */\nexport function isJsDocComment(node: MetaNode, typescript: typeof TS): node is TS.JSDoc {\n\t// TypeScript 4.x\n\tif (\"isJSDoc\" in typescript) {\n\t\treturn typescript.isJSDoc(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocComment;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport {ensureNodeArray} from \"./util/ensure-node-array.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDoc(node: Mutable<TS.JSDoc>, options: CloneNodeVisitorOptions<TS.JSDoc>): TS.JSDoc {\n\tconst baseNode = options.factory.createJSDocComment(\n\t\toptions.hook(\"comment\", node.comment, node.comment),\n\t\tensureNodeArray(options.hook(\"tags\", options.nextNodes(node.tags), node.tags), options.factory)\n\t) as Mutable<TS.JSDoc>;\n\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocUnknownTag\n */\nexport function isJsDocUnknownTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocUnknownTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocUnknownTag\" in typescript) {\n\t\treturn typescript.isJSDocUnknownTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocTag;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocParameterTag\n */\nexport function isJsDocParameterTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocParameterTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocParameterTag\" in typescript) {\n\t\treturn typescript.isJSDocParameterTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocParameterTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocParameterTag(node: Mutable<TS.JSDocParameterTag>, options: CloneNodeVisitorOptions<TS.JSDocParameterTag>): TS.JSDocParameterTag {\n\tconst baseNode = options.factory.createJSDocParameterTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"isBracketed\", node.isBracketed, node.isBracketed),\n\t\toptions.hook(\"typeExpression\", options.nextNode(node.typeExpression), node.typeExpression),\n\t\toptions.hook(\"isNameFirst\", node.isNameFirst, node.isNameFirst),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocParameterTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocReturnTag\n */\nexport function isJsDocReturnTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocReturnTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocReturnTag\" in typescript) {\n\t\treturn typescript.isJSDocReturnTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocReturnTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocReturnTag(node: Mutable<TS.JSDocReturnTag>, options: CloneNodeVisitorOptions<TS.JSDocReturnTag>): TS.JSDocReturnTag {\n\tconst baseNode = options.factory.createJSDocReturnTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"typeExpression\", options.nextNode(node.typeExpression), node.typeExpression),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocReturnTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocTypeExpression\n */\nexport function isJsDocTypeExpression(node: MetaNode, typescript: typeof TS): node is TS.JSDocTypeExpression {\n\t// TypeScript 4.x\n\tif (\"isJSDocTypeExpression\" in typescript) {\n\t\treturn typescript.isJSDocTypeExpression(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocTypeExpression;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocTypeExpression(node: Mutable<TS.JSDocTypeExpression>, options: CloneNodeVisitorOptions<TS.JSDocTypeExpression>): TS.JSDocTypeExpression {\n\tconst baseNode = options.factory.createJSDocTypeExpression(options.hook(\"type\", options.nextNode(node.type), node.type)) as Mutable<TS.JSDocTypeExpression>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocEnumTag\n */\nexport function isJsDocEnumTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocEnumTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocEnumTag\" in typescript) {\n\t\treturn typescript.isJSDocEnumTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocEnumTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocEnumTag(node: Mutable<TS.JSDocEnumTag>, options: CloneNodeVisitorOptions<TS.JSDocEnumTag>): TS.JSDocEnumTag {\n\tconst baseNode = options.factory.createJSDocEnumTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"typeExpression\", options.nextNode(node.typeExpression), node.typeExpression),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocEnumTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocTypeTag\n */\nexport function isJsDocTypeTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocTypeTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocTypeTag\" in typescript) {\n\t\treturn typescript.isJSDocTypeTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocTypeTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocTypeTag(node: Mutable<TS.JSDocTypeTag>, options: CloneNodeVisitorOptions<TS.JSDocTypeTag>): TS.JSDocTypeTag {\n\tconst baseNode = options.factory.createJSDocTypeTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"typeExpression\", options.nextNode(node.typeExpression), node.typeExpression),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocTypeTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocAllType\n */\nexport function isJsDocAllType(node: MetaNode, typescript: typeof TS): node is TS.JSDocAllType {\n\t// TypeScript 4.x\n\tif (\"isJSDocAllType\" in typescript) {\n\t\treturn typescript.isJSDocAllType(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocAllType;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocAllType(node: Mutable<TS.JSDocAllType>, options: CloneNodeVisitorOptions<TS.JSDocAllType>): TS.JSDocAllType {\n\tconst baseNode = options.factory.createJSDocAllType() as Mutable<TS.JSDocAllType>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocUnknownType\n */\nexport function isJsDocUnknownType(node: MetaNode, typescript: typeof TS): node is TS.JSDocUnknownType {\n\t// TypeScript 4.x\n\tif (\"isJSDocUnknownType\" in typescript) {\n\t\treturn typescript.isJSDocUnknownType(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocUnknownType;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocUnknownType(node: Mutable<TS.JSDocUnknownType>, options: CloneNodeVisitorOptions<TS.JSDocUnknownType>): TS.JSDocUnknownType {\n\tconst baseNode = options.factory.createJSDocUnknownType() as Mutable<TS.JSDocUnknownType>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocNonNullableType\n */\nexport function isJsDocNonNullableType(node: MetaNode, typescript: typeof TS): node is TS.JSDocNonNullableType {\n\t// TypeScript 4.x\n\tif (\"isJSDocNonNullableType\" in typescript) {\n\t\treturn typescript.isJSDocNonNullableType(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocNonNullableType;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocNonNullableType(node: Mutable<TS.JSDocNonNullableType>, options: CloneNodeVisitorOptions<TS.JSDocNonNullableType>): TS.JSDocNonNullableType {\n\tconst baseNode = options.factory.createJSDocNonNullableType(options.hook(\"type\", options.nextNode(node.type), node.type)) as Mutable<TS.JSDocNonNullableType>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocNullableType\n */\nexport function isJsDocNullableType(node: MetaNode, typescript: typeof TS): node is TS.JSDocNullableType {\n\t// TypeScript 4.x\n\tif (\"isJSDocNullableType\" in typescript) {\n\t\treturn typescript.isJSDocNullableType(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocNullableType;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocNullableType(node: Mutable<TS.JSDocNullableType>, options: CloneNodeVisitorOptions<TS.JSDocNullableType>): TS.JSDocNullableType {\n\tconst baseNode = options.factory.createJSDocNullableType(options.hook(\"type\", options.nextNode(node.type), node.type)) as Mutable<TS.JSDocNullableType>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocOptionalType\n */\nexport function isJsDocOptionalType(node: MetaNode, typescript: typeof TS): node is TS.JSDocOptionalType {\n\t// TypeScript 4.x\n\tif (\"isJSDocOptionalType\" in typescript) {\n\t\treturn typescript.isJSDocOptionalType(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocOptionalType;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocOptionalType(node: Mutable<TS.JSDocOptionalType>, options: CloneNodeVisitorOptions<TS.JSDocOptionalType>): TS.JSDocOptionalType {\n\tconst baseNode = options.factory.createJSDocOptionalType(options.hook(\"type\", options.nextNode(node.type), node.type)) as Mutable<TS.JSDocOptionalType>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocFunctionType\n */\nexport function isJsDocFunctionType(node: MetaNode, typescript: typeof TS): node is TS.JSDocFunctionType {\n\t// TypeScript 4.x\n\tif (\"isJSDocFunctionType\" in typescript) {\n\t\treturn typescript.isJSDocFunctionType(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocFunctionType;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocFunctionType(node: Mutable<TS.JSDocFunctionType>, options: CloneNodeVisitorOptions<TS.JSDocFunctionType>): TS.JSDocFunctionType {\n\tconst baseNode = options.factory.createJSDocFunctionType(\n\t\toptions.hook(\"parameters\", options.nextNodes(node.parameters), node.parameters),\n\t\toptions.hook(\"type\", node.type, node.type)\n\t) as Mutable<TS.JSDocFunctionType>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocVariadicType\n */\nexport function isJsDocVariadicType(node: MetaNode, typescript: typeof TS): node is TS.JSDocVariadicType {\n\t// TypeScript 4.x\n\tif (\"isJSDocVariadicType\" in typescript) {\n\t\treturn typescript.isJSDocVariadicType(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocVariadicType;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocVariadicType(node: Mutable<TS.JSDocVariadicType>, options: CloneNodeVisitorOptions<TS.JSDocVariadicType>): TS.JSDocVariadicType {\n\tconst baseNode = options.factory.createJSDocVariadicType(options.hook(\"type\", options.nextNode(node.type), node.type)) as Mutable<TS.JSDocVariadicType>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocNamepathType\n */\nexport function isJsDocNamepathType(node: MetaNode, typescript: typeof TS): node is TS.JSDocNamepathType {\n\t// TypeScript 4.x\n\tif (\"isJSDocNamepathType\" in typescript) {\n\t\treturn typescript.isJSDocNamepathType(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocNamepathType;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocNamepathType(node: Mutable<TS.JSDocNamepathType>, options: CloneNodeVisitorOptions<TS.JSDocNamepathType>): TS.JSDocNamepathType {\n\tconst baseNode = options.factory.createJSDocNamepathType(options.hook(\"type\", options.nextNode(node.type), node.type)) as Mutable<TS.JSDocNamepathType>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocUnknownTag(node: Mutable<TS.JSDocUnknownTag>, options: CloneNodeVisitorOptions<TS.JSDocUnknownTag>): TS.JSDocUnknownTag {\n\tconst baseNode = options.factory.createJSDocUnknownTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocUnknownTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocAugmentsTag\n */\nexport function isJsDocAugmentsTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocAugmentsTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocAugmentsTag\" in typescript) {\n\t\treturn typescript.isJSDocAugmentsTag(node);\n\t}\n\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocAugmentsTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocAugmentsTag(node: Mutable<TS.JSDocAugmentsTag>, options: CloneNodeVisitorOptions<TS.JSDocAugmentsTag>): TS.JSDocAugmentsTag {\n\tconst baseNode = options.factory.createJSDocAugmentsTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"class\", options.nextNode(node.class), node.class),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocAugmentsTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocAuthorTag\n */\nexport function isJsDocAuthorTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocAuthorTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocAuthorTag\" in typescript) {\n\t\treturn typescript.isJSDocAuthorTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocAuthorTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocAuthorTag(node: Mutable<TS.JSDocAuthorTag>, options: CloneNodeVisitorOptions<TS.JSDocAuthorTag>): TS.JSDocAuthorTag {\n\tconst baseNode = options.factory.createJSDocAuthorTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocAuthorTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocClassTag\n */\nexport function isJsDocClassTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocClassTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocClassTag\" in typescript) {\n\t\treturn typescript.isJSDocClassTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocClassTag;\n}\n","import type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {TS} from \"./type/ts.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocClassTag(node: Mutable<TS.JSDocClassTag>, options: CloneNodeVisitorOptions<TS.JSDocClassTag>): TS.JSDocClassTag {\n\tconst baseNode = options.factory.createJSDocClassTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocClassTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocThisTag\n */\nexport function isJsDocThisTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocThisTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocThisTag\" in typescript) {\n\t\treturn typescript.isJSDocThisTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocThisTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocThisTag(node: Mutable<TS.JSDocThisTag>, options: CloneNodeVisitorOptions<TS.JSDocThisTag>): TS.JSDocThisTag {\n\tconst baseNode = options.factory.createJSDocThisTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"typeExpression\", options.nextNode(node.typeExpression), node.typeExpression),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocThisTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocTemplateTag\n */\nexport function isJsDocTemplateTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocTemplateTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocTemplateTag\" in typescript) {\n\t\treturn typescript.isJSDocTemplateTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocTemplateTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport {ensureNodeArray} from \"./util/ensure-node-array.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocTemplateTag(node: Mutable<TS.JSDocTemplateTag>, options: CloneNodeVisitorOptions<TS.JSDocTemplateTag>): TS.JSDocTemplateTag {\n\tconst baseNode = options.factory.createJSDocTemplateTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"constraint\", options.nextNode(node.constraint), node.constraint),\n\t\tensureNodeArray(options.hook(\"typeParameters\", options.nextNodes(node.typeParameters), node.typeParameters), options.factory),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocTemplateTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocTypedefTag\n */\nexport function isJsDocTypedefTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocTypedefTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocTypedefTag\" in typescript) {\n\t\treturn typescript.isJSDocTypedefTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocTypedefTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocTypedefTag(node: Mutable<TS.JSDocTypedefTag>, options: CloneNodeVisitorOptions<TS.JSDocTypedefTag>): TS.JSDocTypedefTag {\n\tconst baseNode = options.factory.createJSDocTypedefTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"typeExpression\", options.nextNode(node.typeExpression), node.typeExpression),\n\t\toptions.hook(\"fullName\", options.nextNode(node.fullName), node.fullName),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocTypedefTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\tbaseNode.name = options.hook(\"name\", options.nextNode(node.name), node.name);\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocCallbackTag\n */\nexport function isJsDocCallbackTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocCallbackTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocCallbackTag\" in typescript) {\n\t\treturn typescript.isJSDocCallbackTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocCallbackTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocCallbackTag(node: Mutable<TS.JSDocCallbackTag>, options: CloneNodeVisitorOptions<TS.JSDocCallbackTag>): TS.JSDocCallbackTag {\n\tconst baseNode = options.factory.createJSDocCallbackTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"typeExpression\", options.nextNode(node.typeExpression), node.typeExpression),\n\t\toptions.hook(\"fullName\", options.nextNode(node.fullName), node.fullName),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocCallbackTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\tbaseNode.name = options.hook(\"name\", options.nextNode(node.name), node.name);\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocSignature\n */\nexport function isJsDocSignature(node: MetaNode, typescript: typeof TS): node is TS.JSDocSignature {\n\t// TypeScript 4.x\n\tif (\"isJSDocSignature\" in typescript) {\n\t\treturn typescript.isJSDocSignature(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocSignature;\n}\n","import type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {TS} from \"./type/ts.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocSignature(node: Mutable<TS.JSDocSignature>, options: CloneNodeVisitorOptions<TS.JSDocSignature>): TS.JSDocSignature {\n\tconst baseNode = options.factory.createJSDocSignature(\n\t\toptions.hook(\"typeParameters\", options.nextNodes(node.typeParameters), node.typeParameters),\n\t\toptions.hook(\"parameters\", options.nextNodes(node.parameters), node.parameters),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type)\n\t) as Mutable<TS.JSDocSignature>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocPropertyTag\n */\nexport function isJsDocPropertyTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocPropertyTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocPropertyTag\" in typescript) {\n\t\treturn typescript.isJSDocPropertyTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocPropertyTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocPropertyTag(node: Mutable<TS.JSDocPropertyTag>, options: CloneNodeVisitorOptions<TS.JSDocPropertyTag>): TS.JSDocPropertyTag {\n\tconst baseNode = options.factory.createJSDocPropertyTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"isBracketed\", node.isBracketed, node.isBracketed),\n\t\toptions.hook(\"typeExpression\", options.nextNode(node.typeExpression), node.typeExpression),\n\t\toptions.hook(\"isNameFirst\", node.isNameFirst, node.isNameFirst),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocPropertyTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocTypeLiteral\n */\nexport function isJsDocTypeLiteral(node: MetaNode, typescript: typeof TS): node is TS.JSDocTypeLiteral {\n\t// TypeScript 4.x\n\tif (\"isJSDocTypeLiteral\" in typescript) {\n\t\treturn typescript.isJSDocTypeLiteral(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocTypeLiteral;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocTypeLiteral(node: Mutable<TS.JSDocTypeLiteral>, options: CloneNodeVisitorOptions<TS.JSDocTypeLiteral>): TS.JSDocTypeLiteral {\n\tconst baseNode = options.factory.createJSDocTypeLiteral(\n\t\toptions.hook(\"jsDocPropertyTags\", options.nextNodes(node.jsDocPropertyTags), node.jsDocPropertyTags),\n\t\toptions.hook(\"isArrayType\", node.isArrayType, node.isArrayType)\n\t) as Mutable<TS.JSDocTypeLiteral>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {MetaNode} from \"../type/meta-node.js\";\nimport type {TS} from \"../type/ts.js\";\nimport type {SetParentNodesOptions} from \"../type/set-parent-nodes-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nfunction fixupParentReferences(rootNode: MetaNode, {deep, propertyName, typescript}: SetParentNodesOptions): void {\n\tlet parent = rootNode;\n\ttypescript.forEachChild(rootNode, visitNode);\n\n\tfunction visitNode(n: MetaNode) {\n\t\tif (n[propertyName] !== parent) {\n\t\t\t(n as Mutable<MetaNode>)[propertyName] = parent;\n\t\t\tconst saveParent = parent;\n\t\t\tparent = n;\n\t\t\tif (deep) {\n\t\t\t\ttypescript.forEachChild(n, visitNode);\n\t\t\t}\n\t\t\tif (n.jsDoc != null) {\n\t\t\t\tfor (const jsDocComment of n.jsDoc as MetaNode[]) {\n\t\t\t\t\t(jsDocComment as Mutable<MetaNode>)[propertyName] = n as TS.HasJSDoc;\n\t\t\t\t\tparent = jsDocComment;\n\t\t\t\t\ttypescript.forEachChild(jsDocComment, visitNode);\n\t\t\t\t}\n\t\t\t}\n\t\t\tparent = saveParent;\n\t\t}\n\t}\n}\n\nexport function setParents<T extends MetaNode>(node: T, options: SetParentNodesOptions): T {\n\tfixupParentReferences(node, options);\n\treturn node;\n}\n","import type {MetaNode} from \"../type/meta-node.js\";\nimport type {CloneNodeInternalOptions} from \"../clone-node-options.js\";\n\nexport function getOriginalNode<T extends MetaNode>(node: T, options: CloneNodeInternalOptions): T {\n\tif (node._original != null) {\n\t\treturn getOriginalNode(node._original as T, options);\n\t}\n\n\treturn (options.typescript.getOriginalNode(node) as T | undefined) ?? node;\n}\n","import type {MetaNode} from \"../type/meta-node.js\";\nimport type {TS} from \"../type/ts.js\";\nimport type {CloneNodeInternalOptions} from \"../clone-node-options.js\";\nimport {getOriginalNode} from \"./get-original-node.js\";\n\nfunction formatCommentRange({pos, end}: TS.CommentRange): string {\n\treturn `${pos}:${end}`;\n}\n\nexport interface TSComment {\n\tpos: number;\n\tend: number;\n\ttext: string;\n\tisLeading: boolean;\n\tkind: TS.SyntaxKind.SingleLineCommentTrivia | TS.SyntaxKind.MultiLineCommentTrivia;\n\thasTrailingNewLine: boolean;\n}\n\nexport interface PreserveCommentsOptions extends CloneNodeInternalOptions {}\n\nfunction getCommentRanges<T extends MetaNode>(node: T, options: PreserveCommentsOptions): TSComment[] {\n\tconst comments: TSComment[] = [];\n\tconst originalNode = getOriginalNode(node, options);\n\n\tconst sourceFile = originalNode.getSourceFile() as TS.SourceFile | undefined;\n\n\tif (sourceFile == null || originalNode.pos === -1 || originalNode.end === -1) return [];\n\n\tconst sourceFileText = sourceFile.getFullText();\n\tconst pos = originalNode.getFullStart();\n\tconst end = originalNode.getEnd();\n\tconst leadingCommentRanges = options.typescript.getLeadingCommentRanges(sourceFileText, pos) ?? [];\n\tconst trailingCommentRanges = options.typescript.getTrailingCommentRanges(sourceFileText, end) ?? [];\n\n\tif (leadingCommentRanges.length < 1) {\n\t\t// There may be one anyway such as will be the case when looking at the StringLiteral \"foo\" inside the following\n\t\t// source text: /** @type {string} */ \"foo\"\n\t\tconst fullTextTrimmed = originalNode.getFullText().trim();\n\n\t\t// If the text includes one or more comments, mark them as leading comment ranges\n\t\tif (fullTextTrimmed.startsWith(\"//\") || fullTextTrimmed.startsWith(\"/*\")) {\n\t\t\tleadingCommentRanges.push(...(options.typescript.getTrailingCommentRanges(sourceFileText, pos) ?? []));\n\t\t}\n\t}\n\n\tconst commentRanges = [\n\t\t...leadingCommentRanges.map(range => ({...range, hasTrailingNewLine: Boolean(range.hasTrailingNewLine), isLeading: true})),\n\t\t...trailingCommentRanges.map(range => ({...range, hasTrailingNewLine: Boolean(range.hasTrailingNewLine), isLeading: false}))\n\t];\n\n\tfor (const commentRange of commentRanges) {\n\t\tif (options.commentRanges.has(formatCommentRange(commentRange))) continue;\n\t\toptions.commentRanges.add(formatCommentRange(commentRange));\n\t\tlet text = sourceFile.text.substring(commentRange.pos, commentRange.end);\n\n\t\tif (!text.startsWith(\"//\") && !text.startsWith(\"/*\")) continue;\n\t\tconst isUsingLineCarriages = text.includes(\"\\r\\n\");\n\t\tconst isJsDoc = text.startsWith(\"/**\");\n\n\t\ttext = text\n\t\t\t.split(/\\r?\\n/)\n\t\t\t.map(line => line.trim())\n\t\t\t.map(line => (!isJsDoc || line.startsWith(\"/**\") ? line : ` ${line}`))\n\t\t\t.join(isUsingLineCarriages ? `\\r\\n` : `\\n`);\n\n\t\tif (text.startsWith(\"/**\")) {\n\t\t\t// 'addSyntheticLeadingComment' will place the leading '/*' and the trailing '*/', so these two parts must be stripped\n\t\t\t// from the text before passing it to TypeScript\n\t\t\ttext = text.slice(2, text.length - 2);\n\t\t} else if (text.startsWith(\"/*\")) {\n\t\t\t// 'addSyntheticLeadingComment' will place the leading '/*' and the trailing '*/', so these two parts must be stripped\n\t\t\t// from the text before passing it to TypeScript\n\t\t\ttext = text.slice(2, text.length - 2);\n\t\t} else {\n\t\t\t// 'addSyntheticLeadingComment' will place the leading '//', so this part must be stripped\n\t\t\t// from the text before passing it to TypeScript\n\t\t\ttext = text.slice(2);\n\t\t}\n\n\t\tcomments.push({\n\t\t\t...commentRange,\n\t\t\ttext\n\t\t});\n\t}\n\treturn comments;\n}\n\nexport function preserveAllComments<T extends MetaNode>(node: T, options: PreserveCommentsOptions): void {\n\tif (!options.preserveComments) return;\n\tpreserveCommentsForOriginalNode(node, options);\n\toptions.typescript.forEachChild(node, child => {\n\t\tpreserveAllComments(child, options);\n\t});\n}\n\nfunction preserveCommentsForOriginalNode<T extends MetaNode>(node: T, options: PreserveCommentsOptions): void {\n\tif (options.typescript.isSourceFile(node)) return;\n\tconst originalNode = getOriginalNode(node, options);\n\tif (node !== originalNode) preserveComments(node, originalNode, options);\n}\n\nexport function preserveComments<T extends MetaNode>(node: T, oldNode: T, options: PreserveCommentsOptions): T {\n\tif (!options.preserveComments) return node;\n\n\tif (node.pos > -1 && node.end >= -1) {\n\t\treturn node;\n\t}\n\n\tif (node.jsDoc == null && oldNode.jsDoc != null) {\n\t\tnode.jsDoc = oldNode.jsDoc;\n\t}\n\n\tconst comments = getCommentRanges(oldNode, options);\n\n\tif (comments.length > 0) {\n\t\toptions.typescript.setSyntheticLeadingComments(node, undefined);\n\t\toptions.typescript.setSyntheticTrailingComments(node, undefined);\n\t}\n\n\tfor (const {isLeading, text, hasTrailingNewLine, kind} of comments) {\n\t\tif (isLeading) {\n\t\t\toptions.typescript.addSyntheticLeadingComment(node, kind, text, hasTrailingNewLine);\n\t\t} else {\n\t\t\toptions.typescript.addSyntheticTrailingComment(node, kind, text, hasTrailingNewLine);\n\t\t}\n\t}\n\treturn node;\n}\n","import type {CloneNodeInternalOptions} from \"../clone-node-options.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\nexport function nextOptions<T extends MetaNode>(options: CloneNodeInternalOptions<T>): CloneNodeInternalOptions<T> {\n\treturn {...options, depth: options.depth + 1};\n}\n","import type {CloneNodeHookFactoryPayload, CloneNodeInternalOptions} from \"../clone-node-options.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\nexport function payload<T extends MetaNode>({depth}: CloneNodeInternalOptions<T>): CloneNodeHookFactoryPayload {\n\treturn {depth};\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneNamespaceExport(node: TS.NamespaceExport, options: CloneNodeVisitorOptions<TS.NamespaceExport>): TS.NamespaceExport {\n\treturn options.factory.createNamespaceExport(options.hook(\"name\", options.nextNode(node.name), node.name));\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocReadonlyTag\n */\nexport function isJsDocReadonlyTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocReadonlyTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocReadonlyTag\" in typescript) {\n\t\treturn typescript.isJSDocReadonlyTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocReadonlyTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocReadonlyTag(node: Mutable<TS.JSDocReadonlyTag>, options: CloneNodeVisitorOptions<TS.JSDocReadonlyTag>): TS.JSDocReadonlyTag {\n\tconst baseNode = options.factory.createJSDocReadonlyTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocReadonlyTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocSeeTag\n */\nexport function isJsDocSeeTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocSeeTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocSeeTag\" in typescript) {\n\t\treturn typescript.isJSDocSeeTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocSeeTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocSeeTag(node: Mutable<TS.JSDocSeeTag>, options: CloneNodeVisitorOptions<TS.JSDocSeeTag>): TS.JSDocSeeTag {\n\tconst baseNode = options.factory.createJSDocSeeTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\t// NOTE: do we want to wrap around `node.name`, which is a\n\t\t// `JSDocNameReference`?\n\t\toptions.hook(\"name\", node.name, node.name),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocSeeTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocPrivateTag\n */\nexport function isJsDocPrivateTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocPrivateTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocPrivateTag\" in typescript) {\n\t\treturn typescript.isJSDocPrivateTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocPrivateTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocPrivateTag(node: Mutable<TS.JSDocPrivateTag>, options: CloneNodeVisitorOptions<TS.JSDocPrivateTag>): TS.JSDocPrivateTag {\n\tconst baseNode = options.factory.createJSDocPrivateTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocPrivateTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocProtectedTag\n */\nexport function isJsDocProtectedTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocProtectedTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocProtectedTag\" in typescript) {\n\t\treturn typescript.isJSDocProtectedTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocProtectedTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocProtectedTag(node: Mutable<TS.JSDocProtectedTag>, options: CloneNodeVisitorOptions<TS.JSDocProtectedTag>): TS.JSDocProtectedTag {\n\tconst baseNode = options.factory.createJSDocProtectedTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocProtectedTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocPublicTag\n */\nexport function isJsDocPublicTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocPublicTag {\n\t// TypeScript 4.x\n\tif (\"isJSDocPublicTag\" in typescript) {\n\t\treturn typescript.isJSDocPublicTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocPublicTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocPublicTag(node: Mutable<TS.JSDocPublicTag>, options: CloneNodeVisitorOptions<TS.JSDocPublicTag>): TS.JSDocPublicTag {\n\tconst baseNode = options.factory.createJSDocPublicTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocPublicTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function clonePrivateIdentifier(node: TS.PrivateIdentifier, options: CloneNodeVisitorOptions<TS.PrivateIdentifier>): TS.PrivateIdentifier {\n\treturn options.factory.createPrivateIdentifier(options.hook(\"text\", node.text, node.text));\n}\n","import type {SetParentNodesOptions} from \"../type/set-parent-nodes-options.js\";\nimport ts from \"typescript\";\nimport type {TS} from \"../type/ts.js\";\n\nexport function toSetParentNodesOptions(options: Partial<SetParentNodesOptions>): SetParentNodesOptions {\n\treturn {\n\t\ttypescript: options.typescript ?? (ts as typeof TS),\n\t\tpropertyName: options.propertyName ?? \"parent\",\n\t\tdeep: options.deep ?? true\n\t};\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a NamedTupleMember\n */\nexport function isNamedTupleMember(node: MetaNode, typescript: typeof TS): node is TS.NamedTupleMember {\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\treturn (typescript.SyntaxKind as {NamedTupleMember?: number}).NamedTupleMember != null && node.kind === typescript.SyntaxKind.NamedTupleMember;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneNamedTupleMember(node: TS.NamedTupleMember, options: CloneNodeVisitorOptions<TS.NamedTupleMember>): TS.NamedTupleMember {\n\treturn options.factory.createNamedTupleMember(\n\t\toptions.hook(\"dotDotDotToken\", options.nextNode(node.dotDotDotToken), node.dotDotDotToken),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"questionToken\", options.nextNode(node.questionToken), node.questionToken),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type)\n\t);\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocDeprecatedTag\n */\nexport function isJsDocDeprecatedTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocDeprecatedTag {\n\t// TypeScript 4.x\n\tif (\"JSDocDeprecatedTag\" in typescript) {\n\t\treturn typescript.isJSDocDeprecatedTag(node);\n\t}\n\treturn node.kind === typescript.SyntaxKind.JSDocDeprecatedTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocDeprecatedTag(node: Mutable<TS.JSDocDeprecatedTag>, options: CloneNodeVisitorOptions<TS.JSDocDeprecatedTag>): TS.JSDocDeprecatedTag {\n\tconst baseNode = options.factory.createJSDocDeprecatedTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"comment\", node.comment, node.comment)\n\t) as Mutable<TS.JSDocDeprecatedTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a TemplateLiteralTypeNode\n */\nexport function isTemplateLiteralTypeNode(node: MetaNode, typescript: typeof TS): node is TS.TemplateLiteralTypeNode {\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\treturn (typescript.SyntaxKind as {TemplateLiteralType?: number}).TemplateLiteralType != null && node.kind === typescript.SyntaxKind.TemplateLiteralType;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTemplateLiteralTypeNode(node: TS.TemplateLiteralTypeNode, options: CloneNodeVisitorOptions<TS.TemplateLiteralTypeNode>): TS.TemplateLiteralTypeNode {\n\treturn options.factory.createTemplateLiteralType(\n\t\toptions.hook(\"head\", options.nextNode(node.head), node.head),\n\t\toptions.hook(\"templateSpans\", options.nextNodes(node.templateSpans), node.templateSpans)\n\t);\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a TemplateLiteralTypeSpan\n */\nexport function isTemplateLiteralTypeSpan(node: MetaNode, typescript: typeof TS): node is TS.TemplateLiteralTypeSpan {\n\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\treturn (typescript.SyntaxKind as {TemplateLiteralTypeSpan?: number}).TemplateLiteralTypeSpan != null && node.kind === typescript.SyntaxKind.TemplateLiteralTypeSpan;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneTemplateLiteralTypeSpan(node: TS.TemplateLiteralTypeSpan, options: CloneNodeVisitorOptions<TS.TemplateLiteralTypeSpan>): TS.TemplateLiteralTypeSpan {\n\treturn options.factory.createTemplateLiteralTypeSpan(\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type),\n\t\toptions.hook(\"literal\", options.nextNode(node.literal), node.literal)\n\t);\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocLink\n */\nexport function isJsDocLink(node: MetaNode, typescript: typeof TS): node is TS.JSDocLink {\n\t// TypeScript 4.x\n\tif (\"isJSDocLink\" in typescript) {\n\t\treturn typescript.isJSDocLink(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocLink;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocLink(node: Mutable<TS.JSDocLink>, options: CloneNodeVisitorOptions<TS.JSDocLink>): TS.JSDocLink {\n\tconst baseNode = options.factory.createJSDocLink(\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"text\", node.text, node.text)\n\t) as Mutable<TS.JSDocLink>;\n\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function clonePropertyAccessChain(node: TS.PropertyAccessChain, options: CloneNodeVisitorOptions<TS.PropertyAccessChain>): TS.PropertyAccessChain {\n\treturn options.factory.createPropertyAccessChain(\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"questionDotToken\", options.nextNode(node.questionDotToken), node.questionDotToken),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name)\n\t);\n}\n","import type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {TS} from \"./type/ts.js\";\n\nexport function cloneClassStaticBlockDeclaration(\n\tnode: TS.ClassStaticBlockDeclaration,\n\toptions: CloneNodeVisitorOptions<TS.ClassStaticBlockDeclaration>\n): TS.ClassStaticBlockDeclaration {\n\treturn options.factory.createClassStaticBlockDeclaration(options.hook(\"body\", options.nextNode(node.body), node.body));\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocLinkCode\n */\nexport function isJsDocLinkCode(node: MetaNode, typescript: typeof TS): node is TS.JSDocLinkCode {\n\t// TypeScript 4.x\n\tif (\"isJSDocLinkCode\" in typescript) {\n\t\treturn typescript.isJSDocLinkCode(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocLinkCode;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocLinkCode(node: Mutable<TS.JSDocLinkCode>, options: CloneNodeVisitorOptions<TS.JSDocLinkCode>): TS.JSDocLinkCode {\n\tconst baseNode = options.factory.createJSDocLinkCode(\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"text\", node.text, node.text)\n\t) as Mutable<TS.JSDocLinkCode>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocLinkPlain\n */\nexport function isJsDocLinkPlain(node: MetaNode, typescript: typeof TS): node is TS.JSDocLinkPlain {\n\t// TypeScript 4.x\n\tif (\"isJSDocLinkPlain\" in typescript) {\n\t\treturn typescript.isJSDocLinkPlain(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocLinkPlain;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocLinkPlain(node: Mutable<TS.JSDocLinkPlain>, options: CloneNodeVisitorOptions<TS.JSDocLinkPlain>): TS.JSDocLinkPlain {\n\tconst baseNode = options.factory.createJSDocLinkPlain(\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name),\n\t\toptions.hook(\"text\", node.text, node.text)\n\t) as Mutable<TS.JSDocLinkPlain>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocMemberName\n */\nexport function isJsDocMemberName(node: MetaNode, typescript: typeof TS): node is TS.JSDocMemberName {\n\t// TypeScript 4.x\n\tif (\"isJSDocMemberName\" in typescript) {\n\t\treturn typescript.isJSDocMemberName(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocMemberName;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocMemberName(node: Mutable<TS.JSDocMemberName>, options: CloneNodeVisitorOptions<TS.JSDocMemberName>): TS.JSDocMemberName {\n\tconst baseNode = options.factory.createJSDocMemberName(\n\t\toptions.hook(\"left\", options.nextNode(node.left), node.left),\n\t\toptions.hook(\"right\", options.nextNode(node.right), node.right)\n\t) as Mutable<TS.JSDocMemberName>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport {ensureNodeArray} from \"./util/ensure-node-array.js\";\n\nexport function cloneAssertClause(node: TS.AssertClause, options: CloneNodeVisitorOptions<TS.AssertClause>): TS.AssertClause {\n\treturn options.factory.createAssertClause(\n\t\tensureNodeArray(options.hook(\"elements\", options.nextNodes(node.elements), node.elements), options.factory),\n\t\toptions.hook(\"multiLine\", node.multiLine, node.multiLine)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneAssertEntry(node: TS.AssertEntry, options: CloneNodeVisitorOptions<TS.AssertEntry>): TS.AssertEntry {\n\treturn options.factory.createAssertEntry(options.hook(\"name\", options.nextNode(node.name), node.name), options.hook(\"value\", options.nextNode(node.value), node.value));\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is an ImportTypeAssertionContainer\n */\nexport function isImportTypeAssertionContainer(node: MetaNode, typescript: typeof TS): node is TS.ImportTypeAssertionContainer {\n\treturn (\n\t\t// eslint-disable-next-line @typescript-eslint/naming-convention\n\t\t(typescript.SyntaxKind as {ImportTypeAssertionContainer?: number}).ImportTypeAssertionContainer != null && node.kind === typescript.SyntaxKind.ImportTypeAssertionContainer\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneImportTypeAssertionContainer(\n\tnode: TS.ImportTypeAssertionContainer,\n\toptions: CloneNodeVisitorOptions<TS.ImportTypeAssertionContainer>\n): TS.ImportTypeAssertionContainer {\n\treturn options.factory.createImportTypeAssertionContainer(\n\t\toptions.hook(\"assertClause\", options.nextNode(node.assertClause), node.assertClause),\n\t\toptions.hook(\"multiLine\", node.multiLine, node.multiLine)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneSatisfiesExpression(node: TS.SatisfiesExpression, options: CloneNodeVisitorOptions<TS.SatisfiesExpression>): TS.SatisfiesExpression {\n\treturn options.factory.createSatisfiesExpression(\n\t\toptions.hook(\"expression\", options.nextNode(node.expression), node.expression),\n\t\toptions.hook(\"type\", options.nextNode(node.type), node.type)\n\t);\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocSatisfiesTag\n */\nexport function isJsDocSatisfiesTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocSatisfiesTag {\n\t// TypeScript 5.x\n\tif (\"isJSDocSatisfiesTag\" in typescript) {\n\t\treturn typescript.isJSDocSatisfiesTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocSatisfiesTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocSatisfiesTag(node: Mutable<TS.JSDocSatisfiesTag>, options: CloneNodeVisitorOptions<TS.JSDocSatisfiesTag>): TS.JSDocSatisfiesTag {\n\tconst baseNode = options.factory.createJSDocSatisfiesTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"typeExpression\", options.nextNode(node.typeExpression), node.typeExpression),\n\t\toptions.hook(\"comment\", typeof node.comment === \"string\" ? node.comment : options.nextNodes(node.comment), node.comment)\n\t) as Mutable<TS.JSDocSatisfiesTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocOverloadTag\n */\nexport function isJsDocOverloadTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocOverloadTag {\n\t// TypeScript 5.x\n\tif (\"isJSDocOverloadTag\" in typescript) {\n\t\treturn typescript.isJSDocOverloadTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocOverloadTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocOverloadTag(node: Mutable<TS.JSDocOverloadTag>, options: CloneNodeVisitorOptions<TS.JSDocOverloadTag>): TS.JSDocOverloadTag {\n\tconst baseNode = options.factory.createJSDocOverloadTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"typeExpression\", options.nextNode(node.typeExpression), node.typeExpression),\n\t\toptions.hook(\"comment\", typeof node.comment === \"string\" ? node.comment : options.nextNodes(node.comment), node.comment)\n\t) as Mutable<TS.JSDocOverloadTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocThrowsTag(node: Mutable<TS.JSDocThrowsTag>, options: CloneNodeVisitorOptions<TS.JSDocThrowsTag>): TS.JSDocThrowsTag {\n\tconst baseNode = options.factory.createJSDocThrowsTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"typeExpression\", options.nextNode(node.typeExpression), node.typeExpression),\n\t\toptions.hook(\"comment\", typeof node.comment === \"string\" ? node.comment : options.nextNodes(node.comment), node.comment)\n\t) as Mutable<TS.JSDocThrowsTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocThrowsTag\n */\nexport function isJsDocThrowsTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocThrowsTag {\n\t// TypeScript 5.x\n\tif (\"isJSDocThrowsTag\" in typescript) {\n\t\treturn typescript.isJSDocThrowsTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocThrowsTag;\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JsxNamespacedName\n */\nexport function isJsxNamespacedName(node: MetaNode, typescript: typeof TS): node is TS.JsxNamespacedName {\n\t// TypeScript >=5.1\n\tif (\"isJsxNamespacedName\" in typescript) {\n\t\treturn typescript.isJsxNamespacedName(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JsxNamespacedName;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneJsxNamespacedName(node: TS.JsxNamespacedName, options: CloneNodeVisitorOptions<TS.JsxNamespacedName>): TS.JsxNamespacedName {\n\treturn options.factory.createJsxNamespacedName(\n\t\toptions.hook(\"namespace\", options.nextNode(node.namespace), node.namespace),\n\t\toptions.hook(\"name\", options.nextNode(node.name), node.name)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport {ensureNodeArray} from \"./util/ensure-node-array.js\";\n\nexport function cloneImportAttributes(node: TS.ImportAttributes, options: CloneNodeVisitorOptions<TS.ImportAttributes>): TS.ImportAttributes {\n\treturn options.factory.createImportAttributes(\n\t\tensureNodeArray(options.hook(\"elements\", options.nextNodes(node.elements), node.elements), options.factory),\n\t\toptions.hook(\"multiLine\", node.multiLine, node.multiLine)\n\t);\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\n\nexport function cloneImportAttribute(node: TS.ImportAttribute, options: CloneNodeVisitorOptions<TS.ImportAttribute>): TS.ImportAttribute {\n\treturn options.factory.createImportAttribute(options.hook(\"name\", options.nextNode(node.name), node.name), options.hook(\"value\", options.nextNode(node.value), node.value));\n}\n","import type {TS} from \"../type/ts.js\";\nimport type {MetaNode} from \"../type/meta-node.js\";\n\n/**\n * Returns true if the given Node is a JSDocImportTag\n */\nexport function isJsDocImportTag(node: MetaNode, typescript: typeof TS): node is TS.JSDocImportTag {\n\t// TypeScript 5.x\n\tif (\"isJSDocImportTag\" in typescript) {\n\t\treturn typescript.isJSDocImportTag(node);\n\t}\n\treturn node.kind === (typescript as typeof TS).SyntaxKind.JSDocImportTag;\n}\n","import type {TS} from \"./type/ts.js\";\nimport type {CloneNodeVisitorOptions} from \"./clone-node-options.js\";\nimport type {Mutable} from \"helpertypes\";\n\nexport function cloneJsDocImportTag(node: Mutable<TS.JSDocImportTag>, options: CloneNodeVisitorOptions<TS.JSDocImportTag>): TS.JSDocImportTag {\n\tconst baseNode = options.factory.createJSDocImportTag(\n\t\toptions.hook(\"tagName\", options.nextNode(node.tagName), node.tagName),\n\t\toptions.hook(\"importClause\", options.nextNode(node.importClause), node.importClause),\n\t\toptions.hook(\"moduleSpecifier\", options.nextNode(node.moduleSpecifier), node.moduleSpecifier),\n\t\toptions.hook(\"attributes\", options.nextNode(node.attributes), node.attributes),\n\t\toptions.hook(\"comment\", typeof node.comment === \"string\" ? node.comment : options.nextNodes(node.comment), node.comment)\n\t) as Mutable<TS.JSDocImportTag>;\n\tbaseNode.flags = options.hook(\"flags\", (node.flags |= 8), (node.flags |= 8));\n\n\treturn baseNode;\n}\n","import {cloneIdentifier} from \"./clone-identifier.js\";\nimport {cloneTypeAliasDeclaration} from \"./clone-type-alias-declaration.js\";\nimport type {CloneNodeHook, CloneNodeInternalOptions, CloneNodeOptions, CloneNodeVisitorOptions, NodeHookValue} from \"./clone-node-options.js\";\nimport {cloneToken} from \"./clone-token.js\";\nimport {cloneDecorator} from \"./clone-decorator.js\";\nimport {cloneTypeParameterDeclaration} from \"./clone-type-parameter-declaration.js\";\nimport {cloneQualifiedName} from \"./clone-qualified-name.js\";\nimport {cloneComputedPropertyName} from \"./clone-computed-property-name.js\";\nimport {cloneCallSignatureDeclaration} from \"./clone-call-signature-declaration.js\";\nimport {cloneConstructSignatureDeclaration} from \"./clone-construct-signature-declaration.js\";\nimport {cloneVariableDeclaration} from \"./clone-variable-declaration.js\";\nimport {cloneVariableDeclarationList} from \"./clone-variable-declaration-list.js\";\nimport {cloneVariableStatement} from \"./clone-variable-statement.js\";\nimport {cloneParameterDeclaration} from \"./clone-parameter-declaration.js\";\nimport {cloneBindingElement} from \"./clone-binding-element.js\";\nimport {clonePropertySignature} from \"./clone-property-signature.js\";\nimport {clonePropertyDeclaration} from \"./clone-property-declaration.js\";\nimport {clonePropertyAssignment} from \"./clone-property-assignment.js\";\nimport {cloneShorthandPropertyAssignment} from \"./clone-shorthand-property-assignment.js\";\nimport {cloneSpreadAssignment} from \"./clone-spread-assignment.js\";\nimport {cloneObjectBindingPattern} from \"./clone-object-binding-pattern.js\";\nimport {cloneArrayBindingPattern} from \"./clone-array-binding-pattern.js\";\nimport {cloneFunctionDeclaration} from \"./clone-function-declaration.js\";\nimport {cloneMethodSignature} from \"./clone-method-signature.js\";\nimport {cloneMethodDeclaration} from \"./clone-method-declaration.js\";\nimport {cloneConstructorDeclaration} from \"./clone-constructor-declaration.js\";\nimport {cloneSemicolonClassElement} from \"./clone-semicolon-class-element.js\";\nimport {cloneGetAccessorDeclaration} from \"./clone-get-accessor-declaration.js\";\nimport {cloneSetAccessorDeclaration} from \"./clone-set-accessor-declaration.js\";\nimport {cloneIndexSignatureDeclaration} from \"./clone-index-signature-declaration.js\";\nimport {isKeywordTypeNode} from \"./util/is-keyword-type-node.js\";\nimport {cloneKeywordTypeNode} from \"./clone-keyword-type-node.js\";\nimport {cloneImportTypeNode} from \"./clone-import-type-node.js\";\nimport {cloneThisTypeNode} from \"./clone-this-type-node.js\";\nimport {cloneFunctionTypeNode} from \"./clone-function-type-node.js\";\nimport {cloneConstructorTypeNode} from \"./clone-constructor-type-node.js\";\nimport {cloneTypeReferenceNode} from \"./clone-type-reference-node.js\";\nimport {cloneTypePredicateNode} from \"./clone-type-predicate-node.js\";\nimport {cloneSourceFile} from \"./clone-source-file.js\";\nimport {cloneTypeQueryNode} from \"./clone-type-query-node.js\";\nimport {cloneTypeLiteralNode} from \"./clone-type-literal-node.js\";\nimport {cloneArrayTypeNode} from \"./clone-array-type-node.js\";\nimport {cloneTupleTypeNode} from \"./clone-tuple-type-node.js\";\nimport {cloneOptionalTypeNode} from \"./clone-optional-type-node.js\";\nimport {isOptionalTypeNode} from \"./util/is-optional-type-node.js\";\nimport {cloneRestTypeNode} from \"./clone-rest-type-node.js\";\nimport {isRestTypeNode} from \"./util/is-rest-type-node.js\";\nimport {cloneUnionTypeNode} from \"./clone-union-type-node.js\";\nimport {cloneIntersectionTypeNode} from \"./clone-intersection-type-node.js\";\nimport {cloneLiteralTypeNode} from \"./clone-literal-type-node.js\";\nimport {cloneStringLiteral} from \"./clone-string-literal.js\";\nimport {isBooleanLiteral} from \"./util/is-boolean-literal.js\";\nimport {cloneBooleanLiteral} from \"./clone-boolean-literal.js\";\nimport {clonePrefixUnaryExpression} from \"./clone-prefix-unary-expression.js\";\nimport {cloneRegularExpressionLiteral} from \"./clone-regular-expression-literal.js\";\nimport {cloneNoSubstitutionTemplateLiteral} from \"./clone-no-substitution-template-literal.js\";\nimport {cloneNumericLiteral} from \"./clone-numeric-literal.js\";\nimport {cloneBigIntLiteral} from \"./clone-big-int-literal.js\";\nimport {cloneConditionalTypeNode} from \"./clone-conditional-type-node.js\";\nimport {cloneInferTypeNode} from \"./clone-infer-type-node.js\";\nimport {cloneBlock} from \"./clone-block.js\";\nimport {cloneThrowStatement} from \"./clone-throw-statement.js\";\nimport {cloneNewExpression} from \"./clone-new-expression.js\";\nimport {cloneCallExpression} from \"./clone-call-expression.js\";\nimport {cloneExpressionStatement} from \"./clone-expression-statement.js\";\nimport {cloneExpressionWithTypeArguments} from \"./clone-expression-with-type-arguments.js\";\nimport {clonePropertyAccessExpression} from \"./clone-property-access-expression.js\";\nimport {cloneElementAccessExpression} from \"./clone-element-access-expression.js\";\nimport {cloneArrayLiteralExpression} from \"./clone-array-literal-expression.js\";\nimport {cloneObjectLiteralExpression} from \"./clone-object-literal-expression.js\";\nimport {cloneTemplateExpression} from \"./clone-template-expression.js\";\nimport {cloneTemplateSpan} from \"./clone-template-span.js\";\nimport {cloneTemplateHead} from \"./clone-template-head.js\";\nimport {cloneTemplateMiddle} from \"./clone-template-middle.js\";\nimport {cloneTemplateTail} from \"./clone-template-tail.js\";\nimport {cloneConditionalExpression} from \"./clone-conditional-expression.js\";\nimport {cloneBinaryExpression} from \"./clone-binary-expression.js\";\nimport {cloneParenthesizedExpression} from \"./clone-parenthesized-expression.js\";\nimport {cloneParenthesizedTypeNode} from \"./clone-parenthesized-type-node.js\";\nimport {cloneArrowFunction} from \"./clone-arrow-function.js\";\nimport {cloneClassDeclaration} from \"./clone-class-declaration.js\";\nimport {cloneClassExpression} from \"./clone-class-expression.js\";\nimport {cloneEnumDeclaration} from \"./clone-enum-declaration.js\";\nimport {cloneInterfaceDeclaration} from \"./clone-interface-declaration.js\";\nimport {cloneEnumMember} from \"./clone-enum-member.js\";\nimport {cloneHeritageClause} from \"./clone-heritage-clause.js\";\nimport {cloneEmptyStatement} from \"./clone-empty-statement.js\";\nimport {cloneTypeOperatorNode} from \"./clone-type-operator-node.js\";\nimport {cloneIndexedAccessTypeNode} from \"./clone-indexed-access-type-node.js\";\nimport {cloneMappedTypeNode} from \"./clone-mapped-type-node.js\";\nimport {cloneOmittedExpression} from \"./clone-omitted-expression.js\";\nimport {clonePartiallyEmittedExpression} from \"./clone-partially-omitted-expression.js\";\nimport {isPartiallyEmittedExpression} from \"./util/is-partially-emitted-expression.js\";\nimport {clonePostfixUnaryExpression} from \"./clone-postfix-unary-expression.js\";\nimport {isNullLiteral} from \"./util/is-null-literal.js\";\nimport {cloneNullLiteral} from \"./clone-null-literal.js\";\nimport {isThisExpression} from \"./util/is-this-expression.js\";\nimport {cloneThisExpression} from \"./clone-this-expression.js\";\nimport {cloneReturnStatement} from \"./clone-return-statement.js\";\nimport {isSuperExpression} from \"./util/is-super-expression.js\";\nimport {cloneSuperExpression} from \"./clone-super-expression.js\";\nimport {cloneDeleteExpression} from \"./clone-delete-expression.js\";\nimport {cloneAsExpression} from \"./clone-as-expression.js\";\nimport {cloneTypeAssertion} from \"./clone-type-assertion.js\";\nimport {cloneAwaitExpression} from \"./clone-await-expression.js\";\nimport {cloneYieldExpression} from \"./clone-yield-expression.js\";\nimport {cloneForOfStatement} from \"./clone-for-of-statement.js\";\nimport {cloneForInStatement} from \"./clone-for-in-statement.js\";\nimport {cloneForStatement} from \"./clone-for-statement.js\";\nimport {cloneWhileStatement} from \"./clone-while-statement.js\";\nimport {cloneLabeledStatement} from \"./clone-labeled-statement.js\";\nimport {cloneBreakStatement} from \"./clone-break-statement.js\";\nimport {cloneContinueStatement} from \"./clone-continue-statement.js\";\nimport {cloneIfStatement} from \"./clone-if-statement.js\";\nimport {cloneDoStatement} from \"./clone-do-statement.js\";\nimport {cloneNonNullExpression} from \"./clone-non-null-expression.js\";\nimport {cloneTypeOfExpression} from \"./clone-type-of-expression.js\";\nimport {cloneVoidExpression} from \"./clone-void-expression.js\";\nimport {cloneFunctionExpression} from \"./clone-function-expression.js\";\nimport {cloneSpreadElement} from \"./clone-spread-element.js\";\nimport {cloneTaggedTemplateExpression} from \"./clone-tagged-template-expression.js\";\nimport {cloneMetaProperty} from \"./clone-meta-property.js\";\nimport {cloneJsxElement} from \"./clone-jsx-element.js\";\nimport {cloneJsxAttributes} from \"./clone-jsx-attributes.js\";\nimport {cloneJsxOpeningElement} from \"./clone-jsx-opening-element.js\";\nimport {cloneJsxSelfClosingElement} from \"./clone-jsx-self-closing-element.js\";\nimport {cloneJsxFragment} from \"./clone-jsx-fragment.js\";\nimport {cloneJsxOpeningFragment} from \"./clone-jsx-opening-fragment.js\";\nimport {cloneJsxClosingFragment} from \"./clone-jsx-closing-fragment.js\";\nimport {cloneJsxAttribute} from \"./clone-jsx-attribute.js\";\nimport {cloneJsxSpreadAttribute} from \"./clone-jsx-spread-attribute.js\";\nimport {cloneJsxClosingElement} from \"./clone-jsx-closing-element.js\";\nimport {cloneJsxExpression} from \"./clone-jsx-expression.js\";\nimport {cloneJsxText} from \"./clone-jsx-text.js\";\nimport {isNotEmittedStatement} from \"./util/is-not-emitted-statement.js\";\nimport {cloneNotEmittedStatement} from \"./clone-not-emitted-statement.js\";\nimport {isCommaListExpression} from \"./util/is-comma-list-expression.js\";\nimport {cloneCommaListExpression} from \"./clone-comma-list-expression.js\";\nimport {cloneDebuggerStatement} from \"./clone-debugger-statement.js\";\nimport {cloneWithStatement} from \"./clone-with-statement.js\";\nimport {cloneSwitchStatement} from \"./clone-switch-statement.js\";\nimport {cloneCaseBlock} from \"./clone-case-block.js\";\nimport {cloneCaseClause} from \"./clone-case-clause.js\";\nimport {cloneDefaultClause} from \"./clone-default-clause.js\";\nimport {cloneTryStatement} from \"./clone-try-statement.js\";\nimport {cloneCatchClause} from \"./clone-catch-clause.js\";\nimport {cloneModuleDeclaration} from \"./clone-module-declaration.js\";\nimport {cloneModuleBlock} from \"./clone-module-block.js\";\nimport {cloneImportDeclaration} from \"./clone-import-declaration.js\";\nimport {cloneImportEqualsDeclaration} from \"./clone-import-equals-declaration.js\";\nimport {cloneImportClause} from \"./clone-import-clause.js\";\nimport {cloneNamedImports} from \"./clone-named-imports.js\";\nimport {cloneNamespaceImport} from \"./clone-namespace-import.js\";\nimport {cloneImportSpecifier} from \"./clone-import-specifier.js\";\nimport {cloneExternalModuleReference} from \"./clone-external-module-reference.js\";\nimport {cloneNamespaceExportDeclaration} from \"./clone-namespace-export-declaration.js\";\nimport {cloneExportDeclaration} from \"./clone-export-declaration.js\";\nimport {cloneNamedExports} from \"./clone-named-exports.js\";\nimport {cloneExportSpecifier} from \"./clone-export-specifier.js\";\nimport {cloneExportAssignment} from \"./clone-export-assignment.js\";\nimport type {TS} from \"./type/ts.js\";\nimport {toInternalOptions} from \"./util/to-internal-options.js\";\nimport type {MetaNode} from \"./type/meta-node.js\";\nimport {isJsDocComment} from \"./util/is-js-doc-comment.js\";\nimport {cloneJsDoc} from \"./clone-js-doc-comment.js\";\nimport {isJsDocUnknownTag} from \"./util/is-js-doc-unknown-tag.js\";\nimport {isJsDocParameterTag} from \"./util/is-js-doc-parameter-tag.js\";\nimport {cloneJsDocParameterTag} from \"./clone-js-doc-parameter-tag.js\";\nimport {isJsDocReturnTag} from \"./util/is-js-doc-return-tag.js\";\nimport {cloneJsDocReturnTag} from \"./clone-js-doc-return-tag.js\";\nimport {isJsDocTypeExpression} from \"./util/is-js-doc-type-expression.js\";\nimport {cloneJsDocTypeExpression} from \"./clone-js-doc-type-expression.js\";\nimport {isJsDocEnumTag} from \"./util/is-js-doc-enum-tag.js\";\nimport {cloneJsDocEnumTag} from \"./clone-js-doc-enum-tag.js\";\nimport {isJsDocTypeTag} from \"./util/is-js-doc-type-tag.js\";\nimport {cloneJsDocTypeTag} from \"./clone-js-doc-type-tag.js\";\nimport {isJsDocAllType} from \"./util/is-js-doc-all-type.js\";\nimport {cloneJsDocAllType} from \"./clone-js-doc-all-type.js\";\nimport {isJsDocUnknownType} from \"./util/is-js-doc-unknown-type.js\";\nimport {cloneJsDocUnknownType} from \"./clone-js-doc-unknown-type.js\";\nimport {isJsDocNonNullableType} from \"./util/is-js-doc-non-nullable-type.js\";\nimport {cloneJsDocNonNullableType} from \"./clone-js-doc-non-nullable-type.js\";\nimport {isJsDocNullableType} from \"./util/is-js-doc-nullable-type.js\";\nimport {cloneJsDocNullableType} from \"./clone-js-doc-nullable-type.js\";\nimport {isJsDocOptionalType} from \"./util/is-js-doc-optional-type.js\";\nimport {cloneJsDocOptionalType} from \"./clone-js-doc-optional-type.js\";\nimport {isJsDocFunctionType} from \"./util/is-js-doc-function-type.js\";\nimport {cloneJsDocFunctionType} from \"./clone-js-doc-function-type.js\";\nimport {isJsDocVariadicType} from \"./util/is-js-doc-variadic-type.js\";\nimport {cloneJsDocVariadicType} from \"./clone-js-doc-variadic-type.js\";\nimport {isJsDocNamepathType} from \"./util/is-js-doc-namepath-type.js\";\nimport {cloneJsDocNamepathType} from \"./clone-js-doc-namepath-type.js\";\nimport {cloneJsDocUnknownTag} from \"./clone-js-doc-unknown-tag.js\";\nimport {isJsDocAugmentsTag} from \"./util/is-js-doc-augments-tag.js\";\nimport {cloneJsDocAugmentsTag} from \"./clone-js-doc-augments-tag.js\";\nimport {isJsDocAuthorTag} from \"./util/is-js-doc-author-tag.js\";\nimport {cloneJsDocAuthorTag} from \"./clone-js-doc-author-tag.js\";\nimport {isJsDocClassTag} from \"./util/is-js-doc-class-tag.js\";\nimport {cloneJsDocClassTag} from \"./clone-js-doc-class-tag.js\";\nimport {isJsDocThisTag} from \"./util/is-js-doc-this-tag.js\";\nimport {cloneJsDocThisTag} from \"./clone-js-doc-this-tag.js\";\nimport {isJsDocTemplateTag} from \"./util/is-js-doc-template-tag.js\";\nimport {cloneJsDocTemplateTag} from \"./clone-js-doc-template-tag.js\";\nimport {isJsDocTypedefTag} from \"./util/is-js-doc-typedef-tag.js\";\nimport {cloneJsDocTypedefTag} from \"./clone-js-doc-typedef-tag.js\";\nimport {isJsDocCallbackTag} from \"./util/is-js-doc-callback-tag.js\";\nimport {cloneJsDocCallbackTag} from \"./clone-js-doc-callback-tag.js\";\nimport {isJsDocSignature} from \"./util/is-js-doc-signature.js\";\nimport {cloneJsDocSignature} from \"./clone-js-doc-signature.js\";\nimport {isJsDocPropertyTag} from \"./util/is-js-doc-property-tag.js\";\nimport {cloneJsDocPropertyTag} from \"./clone-js-doc-property-tag.js\";\nimport {isJsDocTypeLiteral} from \"./util/is-js-doc-type-literal.js\";\nimport {cloneJsDocTypeLiteral} from \"./clone-js-doc-type-literal.js\";\nimport {setParents} from \"./util/set-parents.js\";\nimport {preserveAllComments, preserveComments} from \"./util/preserve-comments.js\";\nimport {nextOptions} from \"./util/next-options.js\";\nimport {payload} from \"./util/payload.js\";\nimport {cloneNamespaceExport} from \"./clone-namespace-export.js\";\nimport {isJsDocReadonlyTag} from \"./util/is-js-doc-readonly-tag.js\";\nimport {cloneJsDocReadonlyTag} from \"./clone-js-doc-readonly-tag.js\";\nimport {isJsDocSeeTag} from \"./util/is-js-doc-see-tag.js\";\nimport {cloneJsDocSeeTag} from \"./clone-js-doc-see-tag.js\";\nimport {isJsDocPrivateTag} from \"./util/is-js-doc-private-tag.js\";\nimport {cloneJsDocPrivateTag} from \"./clone-js-doc-private-tag.js\";\nimport {isJsDocProtectedTag} from \"./util/is-js-doc-protected-tag.js\";\nimport {cloneJsDocProtectedTag} from \"./clone-js-doc-protected-tag.js\";\nimport {isJsDocPublicTag} from \"./util/is-js-doc-public-tag.js\";\nimport {cloneJsDocPublicTag} from \"./clone-js-doc-public-tag.js\";\nimport {clonePrivateIdentifier} from \"./clone-private-identifier.js\";\nimport type {SetParentNodesOptions} from \"./type/set-parent-nodes-options.js\";\nimport {toSetParentNodesOptions} from \"./util/to-set-parent-nodes-options.js\";\nimport type {Mutable} from \"helpertypes\";\nimport {isNamedTupleMember} from \"./util/is-named-tuple-member.js\";\nimport {cloneNamedTupleMember} from \"./clone-named-tuple-member.js\";\nimport {isJsDocDeprecatedTag} from \"./util/is-js-doc-deprecated-tag.js\";\nimport {cloneJsDocDeprecatedTag} from \"./clone-js-doc-deprecated-tag.js\";\nimport {isTemplateLiteralTypeNode} from \"./util/is-template-literal-type-node.js\";\nimport {cloneTemplateLiteralTypeNode} from \"./clone-template-literal-type-node.js\";\nimport {isTemplateLiteralTypeSpan} from \"./util/is-template-literal-type-span.js\";\nimport {cloneTemplateLiteralTypeSpan} from \"./clone-template-literal-type-span.js\";\nimport {isJsDocLink} from \"./util/is-js-doc-link.js\";\nimport {cloneJsDocLink} from \"./clone-js-doc-link.js\";\nimport {clonePropertyAccessChain} from \"./clone-property-access-chain.js\";\nimport {cloneClassStaticBlockDeclaration} from \"./clone-class-static-block-declaration.js\";\nimport {isJsDocLinkCode} from \"./util/is-js-doc-link-code.js\";\nimport {cloneJsDocLinkCode} from \"./clone-js-doc-link-code.js\";\nimport {isJsDocLinkPlain} from \"./util/is-js-doc-link-plain.js\";\nimport {cloneJsDocLinkPlain} from \"./clone-js-doc-link-plain.js\";\nimport {isJsDocMemberName} from \"./util/is-js-doc-member-name.js\";\nimport {cloneJsDocMemberName} from \"./clone-js-doc-member-name.js\";\nimport {cloneAssertClause} from \"./clone-assert-clause.js\";\nimport {cloneAssertEntry} from \"./clone-assert-entry.js\";\nimport {isImportTypeAssertionContainer} from \"./util/is-import-type-assertion-container.js\";\nimport {cloneImportTypeAssertionContainer} from \"./clone-import-type-assertion-container.js\";\nimport {cloneSatisfiesExpression} from \"./clone-satisfies-expression.js\";\nimport {isJsDocSatisfiesTag} from \"./util/is-js-doc-satisfies-tag.js\";\nimport {cloneJsDocSatisfiesTag} from \"./clone-js-doc-satisfies-tag.js\";\nimport {isJsDocOverloadTag} from \"./util/is-js-doc-overload-tag.js\";\nimport {cloneJsDocOverloadTag} from \"./clone-js-doc-overload-tag.js\";\nimport {cloneJsDocThrowsTag} from \"./clone-js-doc-throws-tag.js\";\nimport {isJsDocThrowsTag} from \"./util/is-js-doc-throws-tag.js\";\nimport {isJsxNamespacedName} from \"./util/is-jsx-namespaced-name.js\";\nimport {cloneJsxNamespacedName} from \"./clone-jsx-namespaced-name.js\";\nimport {cloneImportAttributes} from \"./clone-import-attributes.js\";\nimport {cloneImportAttribute} from \"./clone-import-attribute.js\";\nimport {isJsDocImportTag} from \"./util/is-js-doc-import-tag.js\";\nimport {cloneJsDocImportTag} from \"./clone-js-doc-import-tag.js\";\n\nexport function setParentNodes<T extends MetaNode>(node: T, options: Partial<SetParentNodesOptions>): T {\n\treturn setParents(node, toSetParentNodesOptions(options));\n}\n\nexport function preserveNode<T extends MetaNode>(node: T, oldNode: T, options?: Partial<CloneNodeOptions<T>>): T;\nexport function preserveNode<T extends MetaNode>(node: undefined, oldNode: undefined, options?: Partial<CloneNodeOptions<T>>): undefined;\nexport function preserveNode<T extends MetaNode>(node: T | undefined, oldNode: T | undefined, options?: Partial<CloneNodeOptions<T>>): T | undefined;\nexport function preserveNode<T extends MetaNode>(node: T | undefined, oldNode: T | undefined, options: Partial<CloneNodeOptions<T>> = {}): T | undefined {\n\tconst internalOptions = toInternalOptions(options);\n\texecutePreserveNode(node, oldNode, internalOptions);\n\n\tif (node != null) {\n\t\tconst parentValue = node._parent ?? (node.parent as TS.Node | undefined) ?? oldNode?._parent ?? oldNode?.parent;\n\t\tif (internalOptions.setParents) {\n\t\t\tif (parentValue != null) {\n\t\t\t\t(node as Mutable<T>).parent = parentValue;\n\t\t\t}\n\t\t} else {\n\t\t\tnode._parent = parentValue;\n\t\t}\n\t}\n\n\treturn node;\n}\n\nexport function cloneNode<T extends MetaNode>(node: T, options?: Partial<CloneNodeOptions<T>>): T;\nexport function cloneNode<T extends MetaNode>(node: undefined, options?: Partial<CloneNodeOptions<T>>): undefined;\nexport function cloneNode<T extends MetaNode>(node: T | undefined, options?: Partial<CloneNodeOptions<T>>): T | undefined;\nexport function cloneNode<T extends MetaNode>(node: T | undefined, options: Partial<CloneNodeOptions<T>> = {}): T | undefined {\n\tif (node === undefined) return undefined;\n\tconst internalOptions = toInternalOptions(options);\n\tconst clone = nextNode(node, internalOptions);\n\texecutePreserveNode(clone, node, internalOptions);\n\n\tif (clone != null) {\n\t\tconst parentValue = node._parent ?? (node.parent as TS.Node | undefined) ?? clone._parent ?? clone.parent;\n\t\tif (internalOptions.setParents) {\n\t\t\t(clone as Mutable<T>).parent = parentValue;\n\t\t} else {\n\t\t\tclone._parent = parentValue;\n\t\t}\n\t}\n\n\treturn clone;\n}\n\nfunction nextNode<Next extends MetaNode>(node: Next | undefined, options: CloneNodeInternalOptions): Next | undefined {\n\tif (node === undefined) return undefined;\n\n\tconst hook = (options.hook(node, payload(options)) ?? {}) as CloneNodeHook<Next>;\n\tconst visitorOptions: CloneNodeVisitorOptions<Next> = {\n\t\t...options,\n\t\tnextNode: <T extends MetaNode>(actualNode: T) => nextNode(actualNode, nextOptions(options)),\n\t\tnextNodes: (<T extends MetaNode>(actualNodes: readonly T[] | T[] | undefined) => nextNodes(actualNodes, nextOptions(options))) as CloneNodeVisitorOptions[\"nextNodes\"],\n\t\thook: (key, newValue, oldValue) => {\n\t\t\tconst callback = hook[key];\n\t\t\tif (callback != null) {\n\t\t\t\treturn callback(newValue, oldValue);\n\t\t\t} else {\n\t\t\t\treturn newValue;\n\t\t\t}\n\t\t}\n\t};\n\n\tconst clone = executeCloneNode(node, visitorOptions) as Next | undefined;\n\tif (clone === undefined) return undefined;\n\n\tif (node.jsDoc != null) {\n\t\tclone.jsDoc = visitorOptions.hook(\"jsDoc\", visitorOptions.nextNodes(node.jsDoc) as NodeHookValue<Next, \"jsDoc\">, node.jsDoc as NodeHookValue<Next, \"jsDoc\">) as TS.JSDoc[];\n\t}\n\n\tsetOriginalNodes(clone, node, options);\n\tpreserveSymbols(clone, node, options);\n\n\treturn options.finalize == null ? clone : ((options.finalize(clone, node, payload(options)) as Next | undefined) ?? clone);\n}\n\nfunction executePreserveNode<T extends MetaNode>(node: T | undefined, oldNode: T | undefined, options: CloneNodeInternalOptions<T>): void {\n\tif (node == null || oldNode == null || node === oldNode) return undefined;\n\tsetParents(node, toSetParentNodesOptions({...options, propertyName: options.setParents ? \"parent\" : \"_parent\"}));\n\t// Prioritize leading over trailing comments\n\tpreserveAllComments(node, options);\n\tpreserveComments(node, oldNode, options);\n\tsetOriginalNodes(node, oldNode, options);\n\tpreserveSymbols(node, oldNode, options);\n}\n\nfunction setOriginalNodes<T extends MetaNode>(newNode: T, oldNode: MetaNode, options: CloneNodeInternalOptions): void {\n\tif (newNode === oldNode) return;\n\tif (options.setOriginalNodes) {\n\t\toptions.typescript.setOriginalNode(newNode, oldNode);\n\t\tnewNode._original = newNode.original;\n\t} else {\n\t\tnewNode._original = oldNode;\n\t}\n}\n\nfunction preserveSymbols<T extends MetaNode>(node: T, otherNode: MetaNode, options: CloneNodeInternalOptions): T {\n\tif (node === otherNode) return node;\n\tconst otherSymbol = otherNode._symbol ?? otherNode.symbol;\n\tif (otherSymbol != null) {\n\t\tnode._symbol = otherSymbol;\n\t}\n\tif (options.preserveSymbols) {\n\t\tnode.symbol = node._symbol;\n\t}\n\treturn node;\n}\n\nfunction nextNodes<Next extends MetaNode>(nodes: readonly Next[] | Next[] | undefined, options: CloneNodeInternalOptions): Next[] | undefined {\n\tif (nodes === undefined) return undefined;\n\n\treturn (nodes as Next[]).map(node => nextNode(node, options)) as Next[] | undefined;\n}\n\nfunction executeCloneNode<T extends MetaNode>(node: T | undefined, options: CloneNodeVisitorOptions<T>): MetaNode | undefined {\n\tif (node == null) return undefined;\n\n\tif (options.typescript.isSourceFile(node)) {\n\t\treturn cloneSourceFile(node, options as unknown as CloneNodeVisitorOptions<TS.SourceFile>);\n\t} else if (options.typescript.isIdentifier(node)) {\n\t\treturn cloneIdentifier(node, options as unknown as CloneNodeVisitorOptions<TS.Identifier>);\n\t}\n\n\t// Note: isPrivateIdentifier may not be supported by the provided TypeScript version, so the invocation is optional.\n\telse if ((options.typescript as Partial<typeof TS>).isPrivateIdentifier?.(node)) {\n\t\treturn clonePrivateIdentifier(node, options as unknown as CloneNodeVisitorOptions<TS.PrivateIdentifier>);\n\t} else if (options.typescript.isTypeAliasDeclaration(node)) {\n\t\treturn cloneTypeAliasDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.TypeAliasDeclaration>);\n\t} else if (options.typescript.isTypeParameterDeclaration(node)) {\n\t\treturn cloneTypeParameterDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.TypeParameterDeclaration>);\n\t} else if (options.typescript.isDecorator(node)) {\n\t\treturn cloneDecorator(node, options as unknown as CloneNodeVisitorOptions<TS.Decorator>);\n\t} else if (options.typescript.isQualifiedName(node)) {\n\t\treturn cloneQualifiedName(node, options as unknown as CloneNodeVisitorOptions<TS.QualifiedName>);\n\t} else if (options.typescript.isComputedPropertyName(node)) {\n\t\treturn cloneComputedPropertyName(node, options as unknown as CloneNodeVisitorOptions<TS.ComputedPropertyName>);\n\t} else if (options.typescript.isCallSignatureDeclaration(node)) {\n\t\treturn cloneCallSignatureDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.CallSignatureDeclaration>);\n\t} else if (options.typescript.isConstructSignatureDeclaration(node)) {\n\t\treturn cloneConstructSignatureDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.ConstructSignatureDeclaration>);\n\t} else if (options.typescript.isVariableDeclaration(node)) {\n\t\treturn cloneVariableDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.VariableDeclaration>);\n\t} else if (options.typescript.isVariableDeclarationList(node)) {\n\t\treturn cloneVariableDeclarationList(node, options as unknown as CloneNodeVisitorOptions<TS.VariableDeclarationList>);\n\t} else if (options.typescript.isVariableStatement(node)) {\n\t\treturn cloneVariableStatement(node, options as unknown as CloneNodeVisitorOptions<TS.VariableStatement>);\n\t} else if (options.typescript.isParameter(node)) {\n\t\treturn cloneParameterDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.ParameterDeclaration>);\n\t} else if (options.typescript.isBindingElement(node)) {\n\t\treturn cloneBindingElement(node, options as unknown as CloneNodeVisitorOptions<TS.BindingElement>);\n\t} else if (options.typescript.isPropertySignature(node)) {\n\t\treturn clonePropertySignature(node, options as unknown as CloneNodeVisitorOptions<TS.PropertySignature>);\n\t} else if (options.typescript.isPropertyDeclaration(node)) {\n\t\treturn clonePropertyDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.PropertyDeclaration>);\n\t} else if (options.typescript.isPropertyAssignment(node)) {\n\t\treturn clonePropertyAssignment(node, options as unknown as CloneNodeVisitorOptions<TS.PropertyAssignment>);\n\t} else if (options.typescript.isShorthandPropertyAssignment(node)) {\n\t\treturn cloneShorthandPropertyAssignment(node, options as unknown as CloneNodeVisitorOptions<TS.ShorthandPropertyAssignment>);\n\t} else if (options.typescript.isSpreadAssignment(node)) {\n\t\treturn cloneSpreadAssignment(node, options as unknown as CloneNodeVisitorOptions<TS.SpreadAssignment>);\n\t} else if (options.typescript.isObjectBindingPattern(node)) {\n\t\treturn cloneObjectBindingPattern(node, options as unknown as CloneNodeVisitorOptions<TS.ObjectBindingPattern>);\n\t} else if (options.typescript.isArrayBindingPattern(node)) {\n\t\treturn cloneArrayBindingPattern(node, options as unknown as CloneNodeVisitorOptions<TS.ArrayBindingPattern>);\n\t} else if (options.typescript.isFunctionDeclaration(node)) {\n\t\treturn cloneFunctionDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.FunctionDeclaration>);\n\t} else if (options.typescript.isMethodSignature(node)) {\n\t\treturn cloneMethodSignature(node, options as unknown as CloneNodeVisitorOptions<TS.MethodSignature>);\n\t} else if (options.typescript.isMethodDeclaration(node)) {\n\t\treturn cloneMethodDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.MethodDeclaration>);\n\t} else if (options.typescript.isConstructorDeclaration(node)) {\n\t\treturn cloneConstructorDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.ConstructorDeclaration>);\n\t} else if (options.typescript.isSemicolonClassElement(node)) {\n\t\treturn cloneSemicolonClassElement(node, options as unknown as CloneNodeVisitorOptions<TS.SemicolonClassElement>);\n\t} else if (options.typescript.isGetAccessorDeclaration(node)) {\n\t\treturn cloneGetAccessorDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.GetAccessorDeclaration>);\n\t} else if (options.typescript.isSetAccessorDeclaration(node)) {\n\t\treturn cloneSetAccessorDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.SetAccessorDeclaration>);\n\t} else if (options.typescript.isIndexSignatureDeclaration(node)) {\n\t\treturn cloneIndexSignatureDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.IndexSignatureDeclaration>);\n\t} else if (isKeywordTypeNode(node, options.typescript)) {\n\t\treturn cloneKeywordTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.KeywordTypeNode>);\n\t} else if (options.typescript.isImportTypeNode(node)) {\n\t\treturn cloneImportTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.ImportTypeNode>);\n\t} else if (options.typescript.isThisTypeNode(node)) {\n\t\treturn cloneThisTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.ThisTypeNode>);\n\t} else if (options.typescript.isFunctionTypeNode(node)) {\n\t\treturn cloneFunctionTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.FunctionTypeNode>);\n\t} else if (options.typescript.isConstructorTypeNode(node)) {\n\t\treturn cloneConstructorTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.ConstructorTypeNode>);\n\t} else if (options.typescript.isTypeReferenceNode(node)) {\n\t\treturn cloneTypeReferenceNode(node, options as unknown as CloneNodeVisitorOptions<TS.TypeReferenceNode>);\n\t} else if (options.typescript.isTypePredicateNode(node)) {\n\t\treturn cloneTypePredicateNode(node, options as unknown as CloneNodeVisitorOptions<TS.TypePredicateNode>);\n\t} else if (options.typescript.isTypeQueryNode(node)) {\n\t\treturn cloneTypeQueryNode(node, options as unknown as CloneNodeVisitorOptions<TS.TypeQueryNode>);\n\t} else if (options.typescript.isTypeLiteralNode(node)) {\n\t\treturn cloneTypeLiteralNode(node, options as unknown as CloneNodeVisitorOptions<TS.TypeLiteralNode>);\n\t} else if (options.typescript.isArrayTypeNode(node)) {\n\t\treturn cloneArrayTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.ArrayTypeNode>);\n\t} else if (options.typescript.isTupleTypeNode(node)) {\n\t\treturn cloneTupleTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.TupleTypeNode>);\n\t} else if (isOptionalTypeNode(node, options.typescript)) {\n\t\treturn cloneOptionalTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.OptionalTypeNode>);\n\t} else if (isRestTypeNode(node, options.typescript)) {\n\t\treturn cloneRestTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.RestTypeNode>);\n\t} else if (options.typescript.isUnionTypeNode(node)) {\n\t\treturn cloneUnionTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.UnionTypeNode>);\n\t} else if (options.typescript.isIntersectionTypeNode(node)) {\n\t\treturn cloneIntersectionTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.IntersectionTypeNode>);\n\t} else if (options.typescript.isConditionalTypeNode(node)) {\n\t\treturn cloneConditionalTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.ConditionalTypeNode>);\n\t} else if (options.typescript.isInferTypeNode(node)) {\n\t\treturn cloneInferTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.InferTypeNode>);\n\t} else if (options.typescript.isLiteralTypeNode(node)) {\n\t\treturn cloneLiteralTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.LiteralTypeNode>);\n\t} else if (options.typescript.isStringLiteral(node)) {\n\t\treturn cloneStringLiteral(node, options as unknown as CloneNodeVisitorOptions<TS.StringLiteral>);\n\t} else if (isBooleanLiteral(node, options.typescript)) {\n\t\treturn cloneBooleanLiteral(node, options as unknown as CloneNodeVisitorOptions<TS.BooleanLiteral>);\n\t} else if (options.typescript.isRegularExpressionLiteral(node)) {\n\t\treturn cloneRegularExpressionLiteral(node, options as unknown as CloneNodeVisitorOptions<TS.RegularExpressionLiteral>);\n\t} else if (options.typescript.isNoSubstitutionTemplateLiteral(node)) {\n\t\treturn cloneNoSubstitutionTemplateLiteral(node, options as unknown as CloneNodeVisitorOptions<TS.NoSubstitutionTemplateLiteral>);\n\t} else if (options.typescript.isNumericLiteral(node)) {\n\t\treturn cloneNumericLiteral(node, options as unknown as CloneNodeVisitorOptions<TS.NumericLiteral>);\n\t}\n\n\t// Note: isBigIntLiteral may not be supported by the provided TypeScript version, so the invocation is optional.\n\telse if ((options.typescript as Partial<typeof TS>).isBigIntLiteral?.(node)) {\n\t\treturn cloneBigIntLiteral(node, options as unknown as CloneNodeVisitorOptions<TS.BigIntLiteral>);\n\t} else if (options.typescript.isArrayLiteralExpression(node)) {\n\t\treturn cloneArrayLiteralExpression(node, options as unknown as CloneNodeVisitorOptions<TS.ArrayLiteralExpression>);\n\t} else if (options.typescript.isObjectLiteralExpression(node)) {\n\t\treturn cloneObjectLiteralExpression(node, options as unknown as CloneNodeVisitorOptions<TS.ObjectLiteralExpression>);\n\t} else if (options.typescript.isPrefixUnaryExpression(node)) {\n\t\treturn clonePrefixUnaryExpression(node, options as unknown as CloneNodeVisitorOptions<TS.PrefixUnaryExpression>);\n\t} else if (options.typescript.isBlock(node)) {\n\t\treturn cloneBlock(node, options as unknown as CloneNodeVisitorOptions<TS.Block>);\n\t} else if (options.typescript.isThrowStatement(node)) {\n\t\treturn cloneThrowStatement(node, options as unknown as CloneNodeVisitorOptions<TS.ThrowStatement>);\n\t} else if (options.typescript.isReturnStatement(node)) {\n\t\treturn cloneReturnStatement(node, options as unknown as CloneNodeVisitorOptions<TS.ReturnStatement>);\n\t} else if ((options.typescript as Partial<typeof TS>).isSatisfiesExpression?.(node)) {\n\t\treturn cloneSatisfiesExpression(node, options as unknown as CloneNodeVisitorOptions<TS.SatisfiesExpression>);\n\t} else if (options.typescript.isNewExpression(node)) {\n\t\treturn cloneNewExpression(node, options as unknown as CloneNodeVisitorOptions<TS.NewExpression>);\n\t} else if (options.typescript.isCallExpression(node)) {\n\t\treturn cloneCallExpression(node, options as unknown as CloneNodeVisitorOptions<TS.CallExpression>);\n\t} else if (options.typescript.isExpressionStatement(node)) {\n\t\treturn cloneExpressionStatement(node, options as unknown as CloneNodeVisitorOptions<TS.ExpressionStatement>);\n\t} else if (options.typescript.isExpressionWithTypeArguments(node)) {\n\t\treturn cloneExpressionWithTypeArguments(node, options as unknown as CloneNodeVisitorOptions<TS.ExpressionWithTypeArguments>);\n\t} else if ((options.typescript as Partial<typeof TS>).isPropertyAccessChain?.(node)) {\n\t\treturn clonePropertyAccessChain(node, options as unknown as CloneNodeVisitorOptions<TS.PropertyAccessChain>);\n\t} else if (options.typescript.isPropertyAccessExpression(node)) {\n\t\treturn clonePropertyAccessExpression(node, options as unknown as CloneNodeVisitorOptions<TS.PropertyAccessExpression>);\n\t} else if (options.typescript.isElementAccessExpression(node)) {\n\t\treturn cloneElementAccessExpression(node, options as unknown as CloneNodeVisitorOptions<TS.ElementAccessExpression>);\n\t} else if (options.typescript.isTemplateExpression(node)) {\n\t\treturn cloneTemplateExpression(node, options as unknown as CloneNodeVisitorOptions<TS.TemplateExpression>);\n\t} else if (options.typescript.isTemplateSpan(node)) {\n\t\treturn cloneTemplateSpan(node, options as unknown as CloneNodeVisitorOptions<TS.TemplateSpan>);\n\t} else if (options.typescript.isTemplateHead(node)) {\n\t\treturn cloneTemplateHead(node, options as unknown as CloneNodeVisitorOptions<TS.TemplateHead>);\n\t} else if (options.typescript.isTemplateMiddle(node)) {\n\t\treturn cloneTemplateMiddle(node, options as unknown as CloneNodeVisitorOptions<TS.TemplateMiddle>);\n\t} else if (options.typescript.isTemplateTail(node)) {\n\t\treturn cloneTemplateTail(node, options as unknown as CloneNodeVisitorOptions<TS.TemplateTail>);\n\t} else if (options.typescript.isConditionalExpression(node)) {\n\t\treturn cloneConditionalExpression(node, options as unknown as CloneNodeVisitorOptions<TS.ConditionalExpression>);\n\t} else if (options.typescript.isBinaryExpression(node)) {\n\t\treturn cloneBinaryExpression(node, options as unknown as CloneNodeVisitorOptions<TS.BinaryExpression>);\n\t} else if (options.typescript.isParenthesizedExpression(node)) {\n\t\treturn cloneParenthesizedExpression(node, options as unknown as CloneNodeVisitorOptions<TS.ParenthesizedExpression>);\n\t} else if (options.typescript.isParenthesizedTypeNode(node)) {\n\t\treturn cloneParenthesizedTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.ParenthesizedTypeNode>);\n\t} else if (options.typescript.isArrowFunction(node)) {\n\t\treturn cloneArrowFunction(node, options as unknown as CloneNodeVisitorOptions<TS.ArrowFunction>);\n\t} else if (options.typescript.isClassDeclaration(node)) {\n\t\treturn cloneClassDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.ClassDeclaration>);\n\t} else if (options.typescript.isClassExpression(node)) {\n\t\treturn cloneClassExpression(node, options as unknown as CloneNodeVisitorOptions<TS.ClassExpression>);\n\t} else if (options.typescript.isEnumDeclaration(node)) {\n\t\treturn cloneEnumDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.EnumDeclaration>);\n\t} else if (options.typescript.isEnumMember(node)) {\n\t\treturn cloneEnumMember(node, options as unknown as CloneNodeVisitorOptions<TS.EnumMember>);\n\t} else if (options.typescript.isInterfaceDeclaration(node)) {\n\t\treturn cloneInterfaceDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.InterfaceDeclaration>);\n\t} else if (options.typescript.isHeritageClause(node)) {\n\t\treturn cloneHeritageClause(node, options as unknown as CloneNodeVisitorOptions<TS.HeritageClause>);\n\t} else if (options.typescript.isEmptyStatement(node)) {\n\t\treturn cloneEmptyStatement(node, options as unknown as CloneNodeVisitorOptions<TS.EmptyStatement>);\n\t} else if (options.typescript.isAsExpression(node)) {\n\t\treturn cloneAsExpression(node, options as unknown as CloneNodeVisitorOptions<TS.AsExpression>);\n\t} else if (\n\t\t(\"isTypeAssertionExpression\" in options.typescript && options.typescript.isTypeAssertionExpression(node)) ||\n\t\t(!(\"isTypeAssertionExpression\" in options.typescript) &&\n\t\t\t\"isTypeAssertion\" in options.typescript &&\n\t\t\tBoolean((options.typescript as {isTypeAssertion(node: TS.Node): boolean}).isTypeAssertion(node)))\n\t) {\n\t\treturn cloneTypeAssertion(node as unknown as TS.TypeAssertion, options as unknown as CloneNodeVisitorOptions<TS.TypeAssertion>);\n\t} else if (options.typescript.isAwaitExpression(node)) {\n\t\treturn cloneAwaitExpression(node, options as unknown as CloneNodeVisitorOptions<TS.AwaitExpression>);\n\t} else if (options.typescript.isYieldExpression(node)) {\n\t\treturn cloneYieldExpression(node, options as unknown as CloneNodeVisitorOptions<TS.YieldExpression>);\n\t} else if (options.typescript.isForOfStatement(node)) {\n\t\treturn cloneForOfStatement(node, options as unknown as CloneNodeVisitorOptions<TS.ForOfStatement>);\n\t} else if (options.typescript.isForInStatement(node)) {\n\t\treturn cloneForInStatement(node, options as unknown as CloneNodeVisitorOptions<TS.ForInStatement>);\n\t} else if (options.typescript.isForStatement(node)) {\n\t\treturn cloneForStatement(node, options as unknown as CloneNodeVisitorOptions<TS.ForStatement>);\n\t} else if (options.typescript.isWhileStatement(node)) {\n\t\treturn cloneWhileStatement(node, options as unknown as CloneNodeVisitorOptions<TS.WhileStatement>);\n\t} else if (options.typescript.isLabeledStatement(node)) {\n\t\treturn cloneLabeledStatement(node, options as unknown as CloneNodeVisitorOptions<TS.LabeledStatement>);\n\t} else if (options.typescript.isBreakStatement(node)) {\n\t\treturn cloneBreakStatement(node, options as unknown as CloneNodeVisitorOptions<TS.BreakStatement>);\n\t} else if (options.typescript.isContinueStatement(node)) {\n\t\treturn cloneContinueStatement(node, options as unknown as CloneNodeVisitorOptions<TS.ContinueStatement>);\n\t} else if (options.typescript.isIfStatement(node)) {\n\t\treturn cloneIfStatement(node, options as unknown as CloneNodeVisitorOptions<TS.IfStatement>);\n\t} else if (options.typescript.isDoStatement(node)) {\n\t\treturn cloneDoStatement(node, options as unknown as CloneNodeVisitorOptions<TS.DoStatement>);\n\t} else if (options.typescript.isNonNullExpression(node)) {\n\t\treturn cloneNonNullExpression(node, options as unknown as CloneNodeVisitorOptions<TS.NonNullExpression>);\n\t} else if (options.typescript.isTypeOperatorNode(node)) {\n\t\treturn cloneTypeOperatorNode(node, options as unknown as CloneNodeVisitorOptions<TS.TypeOperatorNode>);\n\t} else if (options.typescript.isIndexedAccessTypeNode(node)) {\n\t\treturn cloneIndexedAccessTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.IndexedAccessTypeNode>);\n\t}\n\n\t// Note: isMappedTypeNode may not be supported by the provided TypeScript version, so the invocation is optional.\n\telse if ((options.typescript as Partial<typeof TS>).isMappedTypeNode?.(node)) {\n\t\treturn cloneMappedTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.MappedTypeNode>);\n\t} else if (options.typescript.isOmittedExpression(node)) {\n\t\treturn cloneOmittedExpression(node, options as unknown as CloneNodeVisitorOptions<TS.OmittedExpression>);\n\t} else if (isPartiallyEmittedExpression(node, options.typescript)) {\n\t\treturn clonePartiallyEmittedExpression(node, options as unknown as CloneNodeVisitorOptions<TS.PartiallyEmittedExpression>);\n\t} else if (options.typescript.isPostfixUnaryExpression(node)) {\n\t\treturn clonePostfixUnaryExpression(node, options as unknown as CloneNodeVisitorOptions<TS.PostfixUnaryExpression>);\n\t} else if (isNullLiteral(node, options.typescript)) {\n\t\treturn cloneNullLiteral(node, options as unknown as CloneNodeVisitorOptions<TS.NullLiteral>);\n\t} else if (isThisExpression(node, options.typescript)) {\n\t\treturn cloneThisExpression(node, options as unknown as CloneNodeVisitorOptions<TS.ThisExpression>);\n\t} else if (isSuperExpression(node, options.typescript)) {\n\t\treturn cloneSuperExpression(node, options as unknown as CloneNodeVisitorOptions<TS.SuperExpression>);\n\t} else if (options.typescript.isDeleteExpression(node)) {\n\t\treturn cloneDeleteExpression(node, options as unknown as CloneNodeVisitorOptions<TS.DeleteExpression>);\n\t} else if (options.typescript.isTypeOfExpression(node)) {\n\t\treturn cloneTypeOfExpression(node, options as unknown as CloneNodeVisitorOptions<TS.TypeOfExpression>);\n\t} else if (options.typescript.isVoidExpression(node)) {\n\t\treturn cloneVoidExpression(node, options as unknown as CloneNodeVisitorOptions<TS.VoidExpression>);\n\t} else if (options.typescript.isFunctionExpression(node)) {\n\t\treturn cloneFunctionExpression(node, options as unknown as CloneNodeVisitorOptions<TS.FunctionExpression>);\n\t} else if (options.typescript.isSpreadElement(node)) {\n\t\treturn cloneSpreadElement(node, options as unknown as CloneNodeVisitorOptions<TS.SpreadElement>);\n\t} else if (options.typescript.isTaggedTemplateExpression(node)) {\n\t\treturn cloneTaggedTemplateExpression(node, options as unknown as CloneNodeVisitorOptions<TS.TaggedTemplateExpression>);\n\t} else if (options.typescript.isMetaProperty(node)) {\n\t\treturn cloneMetaProperty(node, options as unknown as CloneNodeVisitorOptions<TS.MetaProperty>);\n\t} else if (options.typescript.isJsxElement(node)) {\n\t\treturn cloneJsxElement(node, options as unknown as CloneNodeVisitorOptions<TS.JsxElement>);\n\t} else if (options.typescript.isJsxAttributes(node)) {\n\t\treturn cloneJsxAttributes(node, options as unknown as CloneNodeVisitorOptions<TS.JsxAttributes>);\n\t} else if (options.typescript.isJsxOpeningElement(node)) {\n\t\treturn cloneJsxOpeningElement(node, options as unknown as CloneNodeVisitorOptions<TS.JsxOpeningElement>);\n\t} else if (options.typescript.isJsxSelfClosingElement(node)) {\n\t\treturn cloneJsxSelfClosingElement(node, options as unknown as CloneNodeVisitorOptions<TS.JsxSelfClosingElement>);\n\t} else if (options.typescript.isJsxFragment(node)) {\n\t\treturn cloneJsxFragment(node, options as unknown as CloneNodeVisitorOptions<TS.JsxFragment>);\n\t} else if (options.typescript.isJsxOpeningFragment(node)) {\n\t\treturn cloneJsxOpeningFragment(node, options as unknown as CloneNodeVisitorOptions<TS.JsxOpeningFragment>);\n\t} else if (options.typescript.isJsxClosingFragment(node)) {\n\t\treturn cloneJsxClosingFragment(node, options as unknown as CloneNodeVisitorOptions<TS.JsxClosingFragment>);\n\t} else if (options.typescript.isJsxAttribute(node)) {\n\t\treturn cloneJsxAttribute(node, options as unknown as CloneNodeVisitorOptions<TS.JsxAttribute>);\n\t} else if (options.typescript.isJsxSpreadAttribute(node)) {\n\t\treturn cloneJsxSpreadAttribute(node, options as unknown as CloneNodeVisitorOptions<TS.JsxSpreadAttribute>);\n\t} else if (options.typescript.isJsxClosingElement(node)) {\n\t\treturn cloneJsxClosingElement(node, options as unknown as CloneNodeVisitorOptions<TS.JsxClosingElement>);\n\t} else if (options.typescript.isJsxExpression(node)) {\n\t\treturn cloneJsxExpression(node, options as unknown as CloneNodeVisitorOptions<TS.JsxExpression>);\n\t} else if (options.typescript.isJsxText(node)) {\n\t\treturn cloneJsxText(node, options as unknown as CloneNodeVisitorOptions<TS.JsxText>);\n\t} else if (isJsxNamespacedName(node, options.typescript)) {\n\t\treturn cloneJsxNamespacedName(node, options as unknown as CloneNodeVisitorOptions<TS.JsxNamespacedName>);\n\t} else if (isNotEmittedStatement(node, options.typescript)) {\n\t\treturn cloneNotEmittedStatement(node, options as unknown as CloneNodeVisitorOptions<TS.NotEmittedStatement>);\n\t} else if (isCommaListExpression(node, options.typescript)) {\n\t\treturn cloneCommaListExpression(node, options as unknown as CloneNodeVisitorOptions<TS.CommaListExpression>);\n\t} else if (options.typescript.isDebuggerStatement(node)) {\n\t\treturn cloneDebuggerStatement(node, options as unknown as CloneNodeVisitorOptions<TS.DebuggerStatement>);\n\t} else if (options.typescript.isWithStatement(node)) {\n\t\treturn cloneWithStatement(node, options as unknown as CloneNodeVisitorOptions<TS.WithStatement>);\n\t} else if (options.typescript.isSwitchStatement(node)) {\n\t\treturn cloneSwitchStatement(node, options as unknown as CloneNodeVisitorOptions<TS.SwitchStatement>);\n\t} else if (options.typescript.isCaseBlock(node)) {\n\t\treturn cloneCaseBlock(node, options as unknown as CloneNodeVisitorOptions<TS.CaseBlock>);\n\t} else if (options.typescript.isCaseClause(node)) {\n\t\treturn cloneCaseClause(node, options as unknown as CloneNodeVisitorOptions<TS.CaseClause>);\n\t} else if (options.typescript.isDefaultClause(node)) {\n\t\treturn cloneDefaultClause(node, options as unknown as CloneNodeVisitorOptions<TS.DefaultClause>);\n\t} else if (options.typescript.isTryStatement(node)) {\n\t\treturn cloneTryStatement(node, options as unknown as CloneNodeVisitorOptions<TS.TryStatement>);\n\t} else if (options.typescript.isCatchClause(node)) {\n\t\treturn cloneCatchClause(node, options as unknown as CloneNodeVisitorOptions<TS.CatchClause>);\n\t} else if (options.typescript.isModuleDeclaration(node)) {\n\t\treturn cloneModuleDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.ModuleDeclaration>);\n\t} else if (options.typescript.isModuleBlock(node)) {\n\t\treturn cloneModuleBlock(node, options as unknown as CloneNodeVisitorOptions<TS.ModuleBlock>);\n\t} else if (options.typescript.isImportEqualsDeclaration(node)) {\n\t\treturn cloneImportEqualsDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.ImportEqualsDeclaration>);\n\t} else if (options.typescript.isExternalModuleReference(node)) {\n\t\treturn cloneExternalModuleReference(node, options as unknown as CloneNodeVisitorOptions<TS.ExternalModuleReference>);\n\t} else if (options.typescript.isImportDeclaration(node)) {\n\t\treturn cloneImportDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.ImportDeclaration>);\n\t} else if (options.typescript.isImportClause(node)) {\n\t\treturn cloneImportClause(node, options as unknown as CloneNodeVisitorOptions<TS.ImportClause>);\n\t} else if (options.typescript.isNamedImports(node)) {\n\t\treturn cloneNamedImports(node, options as unknown as CloneNodeVisitorOptions<TS.NamedImports>);\n\t} else if (options.typescript.isNamespaceImport(node)) {\n\t\treturn cloneNamespaceImport(node, options as unknown as CloneNodeVisitorOptions<TS.NamespaceImport>);\n\t} else if (options.typescript.isImportSpecifier(node)) {\n\t\treturn cloneImportSpecifier(node, options as unknown as CloneNodeVisitorOptions<TS.ImportSpecifier>);\n\t} else if (options.typescript.isNamespaceExportDeclaration(node)) {\n\t\treturn cloneNamespaceExportDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.NamespaceExportDeclaration>);\n\t} else if (options.typescript.isExportDeclaration(node)) {\n\t\treturn cloneExportDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.ExportDeclaration>);\n\t} else if (options.typescript.isNamedExports(node)) {\n\t\treturn cloneNamedExports(node, options as unknown as CloneNodeVisitorOptions<TS.NamedExports>);\n\t}\n\n\t// Note: isNamespaceExport may not be supported by the provided TypeScript version, so the invocation is optional.\n\telse if ((options.typescript as Partial<typeof TS>).isNamespaceExport?.(node)) {\n\t\treturn cloneNamespaceExport(node, options as unknown as CloneNodeVisitorOptions<TS.NamespaceExport>);\n\t}\n\n\t// Note: isNamedTupleMember may not be supported by the provided TypeScript version, so the invocation is optional.\n\telse if (isNamedTupleMember(node, options.typescript)) {\n\t\treturn cloneNamedTupleMember(node, options as unknown as CloneNodeVisitorOptions<TS.NamedTupleMember>);\n\t}\n\n\t// Note: isClassStaticBlockDeclaration may not be supported by the provided TypeScript version, so the invocation is optional.\n\telse if ((options.typescript as Partial<typeof TS>).isClassStaticBlockDeclaration?.(node)) {\n\t\treturn cloneClassStaticBlockDeclaration(node, options as unknown as CloneNodeVisitorOptions<TS.ClassStaticBlockDeclaration>);\n\t} else if ((options.typescript as Partial<typeof TS>).isImportAttributes?.(node)) {\n\t\treturn cloneImportAttributes(node, options as unknown as CloneNodeVisitorOptions<TS.ImportAttributes>);\n\t} else if ((options.typescript as Partial<typeof TS>).isImportAttribute?.(node)) {\n\t\treturn cloneImportAttribute(node, options as unknown as CloneNodeVisitorOptions<TS.ImportAttribute>);\n\t}\n\n\t// Note: isAssertClause may not be supported by the provided TypeScript version, so the invocation is optional.\n\telse if ((options.typescript as Partial<typeof TS>).isAssertClause?.(node)) {\n\t\treturn cloneAssertClause(node, options as unknown as CloneNodeVisitorOptions<TS.AssertClause>);\n\t}\n\n\t// Note: isAssertEntry may not be supported by the provided TypeScript version, so the invocation is optional.\n\telse if ((options.typescript as Partial<typeof TS>).isAssertEntry?.(node)) {\n\t\treturn cloneAssertEntry(node, options as unknown as CloneNodeVisitorOptions<TS.AssertEntry>);\n\t} else if (isImportTypeAssertionContainer(node, options.typescript)) {\n\t\treturn cloneImportTypeAssertionContainer(node, options as unknown as CloneNodeVisitorOptions<TS.ImportTypeAssertionContainer>);\n\t} else if (options.typescript.isExportSpecifier(node)) {\n\t\treturn cloneExportSpecifier(node, options as unknown as CloneNodeVisitorOptions<TS.ExportSpecifier>);\n\t} else if (options.typescript.isExportAssignment(node)) {\n\t\treturn cloneExportAssignment(node, options as unknown as CloneNodeVisitorOptions<TS.ExportAssignment>);\n\t} else if (isJsDocComment(node, options.typescript)) {\n\t\treturn cloneJsDoc(node, options as unknown as CloneNodeVisitorOptions<TS.JSDoc>);\n\t} else if (isJsDocParameterTag(node, options.typescript)) {\n\t\treturn cloneJsDocParameterTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocParameterTag>);\n\t} else if (isJsDocReturnTag(node, options.typescript)) {\n\t\treturn cloneJsDocReturnTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocReturnTag>);\n\t} else if (isJsDocTypeExpression(node, options.typescript)) {\n\t\treturn cloneJsDocTypeExpression(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocTypeExpression>);\n\t} else if (isJsDocEnumTag(node, options.typescript)) {\n\t\treturn cloneJsDocEnumTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocEnumTag>);\n\t} else if (isJsDocTypeTag(node, options.typescript)) {\n\t\treturn cloneJsDocTypeTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocTypeTag>);\n\t} else if (isJsDocAllType(node, options.typescript)) {\n\t\treturn cloneJsDocAllType(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocAllType>);\n\t} else if (isJsDocUnknownType(node, options.typescript)) {\n\t\treturn cloneJsDocUnknownType(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocUnknownType>);\n\t} else if (isJsDocNonNullableType(node, options.typescript)) {\n\t\treturn cloneJsDocNonNullableType(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocNonNullableType>);\n\t} else if (isJsDocNullableType(node, options.typescript)) {\n\t\treturn cloneJsDocNullableType(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocNullableType>);\n\t} else if (isJsDocOptionalType(node, options.typescript)) {\n\t\treturn cloneJsDocOptionalType(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocOptionalType>);\n\t} else if (isJsDocFunctionType(node, options.typescript)) {\n\t\treturn cloneJsDocFunctionType(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocFunctionType>);\n\t} else if (isJsDocVariadicType(node, options.typescript)) {\n\t\treturn cloneJsDocVariadicType(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocVariadicType>);\n\t} else if (isJsDocNamepathType(node, options.typescript)) {\n\t\treturn cloneJsDocNamepathType(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocNamepathType>);\n\t} else if (isJsDocUnknownTag(node, options.typescript)) {\n\t\treturn cloneJsDocUnknownTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocUnknownTag>);\n\t} else if (isJsDocAugmentsTag(node, options.typescript)) {\n\t\treturn cloneJsDocAugmentsTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocAugmentsTag>);\n\t} else if (isJsDocAuthorTag(node, options.typescript)) {\n\t\treturn cloneJsDocAuthorTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocAuthorTag>);\n\t} else if (isJsDocClassTag(node, options.typescript)) {\n\t\treturn cloneJsDocClassTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocClassTag>);\n\t} else if (isJsDocThisTag(node, options.typescript)) {\n\t\treturn cloneJsDocThisTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocThisTag>);\n\t} else if (isJsDocTemplateTag(node, options.typescript)) {\n\t\treturn cloneJsDocTemplateTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocTemplateTag>);\n\t} else if (isJsDocTypedefTag(node, options.typescript)) {\n\t\treturn cloneJsDocTypedefTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocTypedefTag>);\n\t} else if (isJsDocDeprecatedTag(node, options.typescript)) {\n\t\treturn cloneJsDocDeprecatedTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocDeprecatedTag>);\n\t} else if (isJsDocCallbackTag(node, options.typescript)) {\n\t\treturn cloneJsDocCallbackTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocCallbackTag>);\n\t} else if (isJsDocSignature(node, options.typescript)) {\n\t\treturn cloneJsDocSignature(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocSignature>);\n\t} else if (isJsDocPropertyTag(node, options.typescript)) {\n\t\treturn cloneJsDocPropertyTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocPropertyTag>);\n\t} else if (isJsDocTypeLiteral(node, options.typescript)) {\n\t\treturn cloneJsDocTypeLiteral(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocTypeLiteral>);\n\t} else if (isJsDocReadonlyTag(node, options.typescript)) {\n\t\treturn cloneJsDocReadonlyTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocReadonlyTag>);\n\t} else if (isJsDocSeeTag(node, options.typescript)) {\n\t\treturn cloneJsDocSeeTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocSeeTag>);\n\t} else if (isJsDocLink(node, options.typescript)) {\n\t\treturn cloneJsDocLink(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocLink>);\n\t} else if (isJsDocPrivateTag(node, options.typescript)) {\n\t\treturn cloneJsDocPrivateTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocPrivateTag>);\n\t} else if (isJsDocProtectedTag(node, options.typescript)) {\n\t\treturn cloneJsDocProtectedTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocProtectedTag>);\n\t} else if (isJsDocPublicTag(node, options.typescript)) {\n\t\treturn cloneJsDocPublicTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocPublicTag>);\n\t} else if (isJsDocLinkCode(node, options.typescript)) {\n\t\treturn cloneJsDocLinkCode(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocLinkCode>);\n\t} else if (isJsDocLinkPlain(node, options.typescript)) {\n\t\treturn cloneJsDocLinkPlain(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocLinkPlain>);\n\t} else if (isJsDocMemberName(node, options.typescript)) {\n\t\treturn cloneJsDocMemberName(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocMemberName>);\n\t} else if (isJsDocSatisfiesTag(node, options.typescript)) {\n\t\treturn cloneJsDocSatisfiesTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocSatisfiesTag>);\n\t} else if (isJsDocImportTag(node, options.typescript)) {\n\t\treturn cloneJsDocImportTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocImportTag>);\n\t} else if (isJsDocOverloadTag(node, options.typescript)) {\n\t\treturn cloneJsDocOverloadTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocOverloadTag>);\n\t} else if (isJsDocThrowsTag(node, options.typescript)) {\n\t\treturn cloneJsDocThrowsTag(node, options as unknown as CloneNodeVisitorOptions<TS.JSDocThrowsTag>);\n\t} else if (options.typescript.isToken(node)) {\n\t\treturn cloneToken(node, options as unknown as CloneNodeVisitorOptions<TS.Token<TS.SyntaxKind>>);\n\t} else if (isTemplateLiteralTypeNode(node, options.typescript)) {\n\t\treturn cloneTemplateLiteralTypeNode(node, options as unknown as CloneNodeVisitorOptions<TS.TemplateLiteralTypeNode>);\n\t} else if (isTemplateLiteralTypeSpan(node, options.typescript)) {\n\t\treturn cloneTemplateLiteralTypeSpan(node, options as unknown as CloneNodeVisitorOptions<TS.TemplateLiteralTypeSpan>);\n\t}\n\n\tthrow new TypeError(`Could not handle Node of kind: '${options.typescript.SyntaxKind[node.kind]}'`);\n}\n"],"mappings":"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","names":["ts","import_typescript","ts"]}