oxc_ast/generated/
derive_clone_in.rs

1// Auto-generated code, DO NOT EDIT DIRECTLY!
2// To edit this generated file you have to edit `tasks/ast_tools/src/derives/clone_in.rs`.
3
4#![allow(unused_variables, clippy::default_trait_access, clippy::inline_always)]
5
6use oxc_allocator::{Allocator, CloneIn};
7
8use crate::ast::comment::*;
9use crate::ast::js::*;
10use crate::ast::jsx::*;
11use crate::ast::literal::*;
12use crate::ast::ts::*;
13
14impl<'new_alloc> CloneIn<'new_alloc> for Program<'_> {
15    type Cloned = Program<'new_alloc>;
16
17    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
18        Program {
19            span: CloneIn::clone_in(&self.span, allocator),
20            source_type: CloneIn::clone_in(&self.source_type, allocator),
21            source_text: CloneIn::clone_in(&self.source_text, allocator),
22            comments: CloneIn::clone_in(&self.comments, allocator),
23            hashbang: CloneIn::clone_in(&self.hashbang, allocator),
24            directives: CloneIn::clone_in(&self.directives, allocator),
25            body: CloneIn::clone_in(&self.body, allocator),
26            scope_id: Default::default(),
27        }
28    }
29
30    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
31        Program {
32            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
33            source_type: CloneIn::clone_in_with_semantic_ids(&self.source_type, allocator),
34            source_text: CloneIn::clone_in_with_semantic_ids(&self.source_text, allocator),
35            comments: CloneIn::clone_in_with_semantic_ids(&self.comments, allocator),
36            hashbang: CloneIn::clone_in_with_semantic_ids(&self.hashbang, allocator),
37            directives: CloneIn::clone_in_with_semantic_ids(&self.directives, allocator),
38            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
39            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
40        }
41    }
42}
43
44impl<'new_alloc> CloneIn<'new_alloc> for Expression<'_> {
45    type Cloned = Expression<'new_alloc>;
46
47    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
48        match self {
49            Self::BooleanLiteral(it) => {
50                Expression::BooleanLiteral(CloneIn::clone_in(it, allocator))
51            }
52            Self::NullLiteral(it) => Expression::NullLiteral(CloneIn::clone_in(it, allocator)),
53            Self::NumericLiteral(it) => {
54                Expression::NumericLiteral(CloneIn::clone_in(it, allocator))
55            }
56            Self::BigIntLiteral(it) => Expression::BigIntLiteral(CloneIn::clone_in(it, allocator)),
57            Self::RegExpLiteral(it) => Expression::RegExpLiteral(CloneIn::clone_in(it, allocator)),
58            Self::StringLiteral(it) => Expression::StringLiteral(CloneIn::clone_in(it, allocator)),
59            Self::TemplateLiteral(it) => {
60                Expression::TemplateLiteral(CloneIn::clone_in(it, allocator))
61            }
62            Self::Identifier(it) => Expression::Identifier(CloneIn::clone_in(it, allocator)),
63            Self::MetaProperty(it) => Expression::MetaProperty(CloneIn::clone_in(it, allocator)),
64            Self::Super(it) => Expression::Super(CloneIn::clone_in(it, allocator)),
65            Self::ArrayExpression(it) => {
66                Expression::ArrayExpression(CloneIn::clone_in(it, allocator))
67            }
68            Self::ArrowFunctionExpression(it) => {
69                Expression::ArrowFunctionExpression(CloneIn::clone_in(it, allocator))
70            }
71            Self::AssignmentExpression(it) => {
72                Expression::AssignmentExpression(CloneIn::clone_in(it, allocator))
73            }
74            Self::AwaitExpression(it) => {
75                Expression::AwaitExpression(CloneIn::clone_in(it, allocator))
76            }
77            Self::BinaryExpression(it) => {
78                Expression::BinaryExpression(CloneIn::clone_in(it, allocator))
79            }
80            Self::CallExpression(it) => {
81                Expression::CallExpression(CloneIn::clone_in(it, allocator))
82            }
83            Self::ChainExpression(it) => {
84                Expression::ChainExpression(CloneIn::clone_in(it, allocator))
85            }
86            Self::ClassExpression(it) => {
87                Expression::ClassExpression(CloneIn::clone_in(it, allocator))
88            }
89            Self::ConditionalExpression(it) => {
90                Expression::ConditionalExpression(CloneIn::clone_in(it, allocator))
91            }
92            Self::FunctionExpression(it) => {
93                Expression::FunctionExpression(CloneIn::clone_in(it, allocator))
94            }
95            Self::ImportExpression(it) => {
96                Expression::ImportExpression(CloneIn::clone_in(it, allocator))
97            }
98            Self::LogicalExpression(it) => {
99                Expression::LogicalExpression(CloneIn::clone_in(it, allocator))
100            }
101            Self::NewExpression(it) => Expression::NewExpression(CloneIn::clone_in(it, allocator)),
102            Self::ObjectExpression(it) => {
103                Expression::ObjectExpression(CloneIn::clone_in(it, allocator))
104            }
105            Self::ParenthesizedExpression(it) => {
106                Expression::ParenthesizedExpression(CloneIn::clone_in(it, allocator))
107            }
108            Self::SequenceExpression(it) => {
109                Expression::SequenceExpression(CloneIn::clone_in(it, allocator))
110            }
111            Self::TaggedTemplateExpression(it) => {
112                Expression::TaggedTemplateExpression(CloneIn::clone_in(it, allocator))
113            }
114            Self::ThisExpression(it) => {
115                Expression::ThisExpression(CloneIn::clone_in(it, allocator))
116            }
117            Self::UnaryExpression(it) => {
118                Expression::UnaryExpression(CloneIn::clone_in(it, allocator))
119            }
120            Self::UpdateExpression(it) => {
121                Expression::UpdateExpression(CloneIn::clone_in(it, allocator))
122            }
123            Self::YieldExpression(it) => {
124                Expression::YieldExpression(CloneIn::clone_in(it, allocator))
125            }
126            Self::PrivateInExpression(it) => {
127                Expression::PrivateInExpression(CloneIn::clone_in(it, allocator))
128            }
129            Self::JSXElement(it) => Expression::JSXElement(CloneIn::clone_in(it, allocator)),
130            Self::JSXFragment(it) => Expression::JSXFragment(CloneIn::clone_in(it, allocator)),
131            Self::TSAsExpression(it) => {
132                Expression::TSAsExpression(CloneIn::clone_in(it, allocator))
133            }
134            Self::TSSatisfiesExpression(it) => {
135                Expression::TSSatisfiesExpression(CloneIn::clone_in(it, allocator))
136            }
137            Self::TSTypeAssertion(it) => {
138                Expression::TSTypeAssertion(CloneIn::clone_in(it, allocator))
139            }
140            Self::TSNonNullExpression(it) => {
141                Expression::TSNonNullExpression(CloneIn::clone_in(it, allocator))
142            }
143            Self::TSInstantiationExpression(it) => {
144                Expression::TSInstantiationExpression(CloneIn::clone_in(it, allocator))
145            }
146            Self::V8IntrinsicExpression(it) => {
147                Expression::V8IntrinsicExpression(CloneIn::clone_in(it, allocator))
148            }
149            Self::ComputedMemberExpression(it) => {
150                Expression::ComputedMemberExpression(CloneIn::clone_in(it, allocator))
151            }
152            Self::StaticMemberExpression(it) => {
153                Expression::StaticMemberExpression(CloneIn::clone_in(it, allocator))
154            }
155            Self::PrivateFieldExpression(it) => {
156                Expression::PrivateFieldExpression(CloneIn::clone_in(it, allocator))
157            }
158        }
159    }
160
161    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
162        match self {
163            Self::BooleanLiteral(it) => {
164                Expression::BooleanLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
165            }
166            Self::NullLiteral(it) => {
167                Expression::NullLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
168            }
169            Self::NumericLiteral(it) => {
170                Expression::NumericLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
171            }
172            Self::BigIntLiteral(it) => {
173                Expression::BigIntLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
174            }
175            Self::RegExpLiteral(it) => {
176                Expression::RegExpLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
177            }
178            Self::StringLiteral(it) => {
179                Expression::StringLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
180            }
181            Self::TemplateLiteral(it) => {
182                Expression::TemplateLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
183            }
184            Self::Identifier(it) => {
185                Expression::Identifier(CloneIn::clone_in_with_semantic_ids(it, allocator))
186            }
187            Self::MetaProperty(it) => {
188                Expression::MetaProperty(CloneIn::clone_in_with_semantic_ids(it, allocator))
189            }
190            Self::Super(it) => {
191                Expression::Super(CloneIn::clone_in_with_semantic_ids(it, allocator))
192            }
193            Self::ArrayExpression(it) => {
194                Expression::ArrayExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
195            }
196            Self::ArrowFunctionExpression(it) => Expression::ArrowFunctionExpression(
197                CloneIn::clone_in_with_semantic_ids(it, allocator),
198            ),
199            Self::AssignmentExpression(it) => {
200                Expression::AssignmentExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
201            }
202            Self::AwaitExpression(it) => {
203                Expression::AwaitExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
204            }
205            Self::BinaryExpression(it) => {
206                Expression::BinaryExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
207            }
208            Self::CallExpression(it) => {
209                Expression::CallExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
210            }
211            Self::ChainExpression(it) => {
212                Expression::ChainExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
213            }
214            Self::ClassExpression(it) => {
215                Expression::ClassExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
216            }
217            Self::ConditionalExpression(it) => Expression::ConditionalExpression(
218                CloneIn::clone_in_with_semantic_ids(it, allocator),
219            ),
220            Self::FunctionExpression(it) => {
221                Expression::FunctionExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
222            }
223            Self::ImportExpression(it) => {
224                Expression::ImportExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
225            }
226            Self::LogicalExpression(it) => {
227                Expression::LogicalExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
228            }
229            Self::NewExpression(it) => {
230                Expression::NewExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
231            }
232            Self::ObjectExpression(it) => {
233                Expression::ObjectExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
234            }
235            Self::ParenthesizedExpression(it) => Expression::ParenthesizedExpression(
236                CloneIn::clone_in_with_semantic_ids(it, allocator),
237            ),
238            Self::SequenceExpression(it) => {
239                Expression::SequenceExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
240            }
241            Self::TaggedTemplateExpression(it) => Expression::TaggedTemplateExpression(
242                CloneIn::clone_in_with_semantic_ids(it, allocator),
243            ),
244            Self::ThisExpression(it) => {
245                Expression::ThisExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
246            }
247            Self::UnaryExpression(it) => {
248                Expression::UnaryExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
249            }
250            Self::UpdateExpression(it) => {
251                Expression::UpdateExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
252            }
253            Self::YieldExpression(it) => {
254                Expression::YieldExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
255            }
256            Self::PrivateInExpression(it) => {
257                Expression::PrivateInExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
258            }
259            Self::JSXElement(it) => {
260                Expression::JSXElement(CloneIn::clone_in_with_semantic_ids(it, allocator))
261            }
262            Self::JSXFragment(it) => {
263                Expression::JSXFragment(CloneIn::clone_in_with_semantic_ids(it, allocator))
264            }
265            Self::TSAsExpression(it) => {
266                Expression::TSAsExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
267            }
268            Self::TSSatisfiesExpression(it) => Expression::TSSatisfiesExpression(
269                CloneIn::clone_in_with_semantic_ids(it, allocator),
270            ),
271            Self::TSTypeAssertion(it) => {
272                Expression::TSTypeAssertion(CloneIn::clone_in_with_semantic_ids(it, allocator))
273            }
274            Self::TSNonNullExpression(it) => {
275                Expression::TSNonNullExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
276            }
277            Self::TSInstantiationExpression(it) => Expression::TSInstantiationExpression(
278                CloneIn::clone_in_with_semantic_ids(it, allocator),
279            ),
280            Self::V8IntrinsicExpression(it) => Expression::V8IntrinsicExpression(
281                CloneIn::clone_in_with_semantic_ids(it, allocator),
282            ),
283            Self::ComputedMemberExpression(it) => Expression::ComputedMemberExpression(
284                CloneIn::clone_in_with_semantic_ids(it, allocator),
285            ),
286            Self::StaticMemberExpression(it) => Expression::StaticMemberExpression(
287                CloneIn::clone_in_with_semantic_ids(it, allocator),
288            ),
289            Self::PrivateFieldExpression(it) => Expression::PrivateFieldExpression(
290                CloneIn::clone_in_with_semantic_ids(it, allocator),
291            ),
292        }
293    }
294}
295
296impl<'new_alloc> CloneIn<'new_alloc> for IdentifierName<'_> {
297    type Cloned = IdentifierName<'new_alloc>;
298
299    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
300        IdentifierName {
301            span: CloneIn::clone_in(&self.span, allocator),
302            name: CloneIn::clone_in(&self.name, allocator),
303        }
304    }
305
306    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
307        IdentifierName {
308            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
309            name: CloneIn::clone_in_with_semantic_ids(&self.name, allocator),
310        }
311    }
312}
313
314impl<'new_alloc> CloneIn<'new_alloc> for IdentifierReference<'_> {
315    type Cloned = IdentifierReference<'new_alloc>;
316
317    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
318        IdentifierReference {
319            span: CloneIn::clone_in(&self.span, allocator),
320            name: CloneIn::clone_in(&self.name, allocator),
321            reference_id: Default::default(),
322        }
323    }
324
325    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
326        IdentifierReference {
327            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
328            name: CloneIn::clone_in_with_semantic_ids(&self.name, allocator),
329            reference_id: CloneIn::clone_in_with_semantic_ids(&self.reference_id, allocator),
330        }
331    }
332}
333
334impl<'new_alloc> CloneIn<'new_alloc> for BindingIdentifier<'_> {
335    type Cloned = BindingIdentifier<'new_alloc>;
336
337    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
338        BindingIdentifier {
339            span: CloneIn::clone_in(&self.span, allocator),
340            name: CloneIn::clone_in(&self.name, allocator),
341            symbol_id: Default::default(),
342        }
343    }
344
345    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
346        BindingIdentifier {
347            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
348            name: CloneIn::clone_in_with_semantic_ids(&self.name, allocator),
349            symbol_id: CloneIn::clone_in_with_semantic_ids(&self.symbol_id, allocator),
350        }
351    }
352}
353
354impl<'new_alloc> CloneIn<'new_alloc> for LabelIdentifier<'_> {
355    type Cloned = LabelIdentifier<'new_alloc>;
356
357    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
358        LabelIdentifier {
359            span: CloneIn::clone_in(&self.span, allocator),
360            name: CloneIn::clone_in(&self.name, allocator),
361        }
362    }
363
364    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
365        LabelIdentifier {
366            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
367            name: CloneIn::clone_in_with_semantic_ids(&self.name, allocator),
368        }
369    }
370}
371
372impl<'new_alloc> CloneIn<'new_alloc> for ThisExpression {
373    type Cloned = ThisExpression;
374
375    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
376        ThisExpression { span: CloneIn::clone_in(&self.span, allocator) }
377    }
378
379    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
380        ThisExpression { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
381    }
382}
383
384impl<'new_alloc> CloneIn<'new_alloc> for ArrayExpression<'_> {
385    type Cloned = ArrayExpression<'new_alloc>;
386
387    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
388        ArrayExpression {
389            span: CloneIn::clone_in(&self.span, allocator),
390            elements: CloneIn::clone_in(&self.elements, allocator),
391        }
392    }
393
394    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
395        ArrayExpression {
396            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
397            elements: CloneIn::clone_in_with_semantic_ids(&self.elements, allocator),
398        }
399    }
400}
401
402impl<'new_alloc> CloneIn<'new_alloc> for ArrayExpressionElement<'_> {
403    type Cloned = ArrayExpressionElement<'new_alloc>;
404
405    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
406        match self {
407            Self::SpreadElement(it) => {
408                ArrayExpressionElement::SpreadElement(CloneIn::clone_in(it, allocator))
409            }
410            Self::Elision(it) => ArrayExpressionElement::Elision(CloneIn::clone_in(it, allocator)),
411            Self::BooleanLiteral(it) => {
412                ArrayExpressionElement::BooleanLiteral(CloneIn::clone_in(it, allocator))
413            }
414            Self::NullLiteral(it) => {
415                ArrayExpressionElement::NullLiteral(CloneIn::clone_in(it, allocator))
416            }
417            Self::NumericLiteral(it) => {
418                ArrayExpressionElement::NumericLiteral(CloneIn::clone_in(it, allocator))
419            }
420            Self::BigIntLiteral(it) => {
421                ArrayExpressionElement::BigIntLiteral(CloneIn::clone_in(it, allocator))
422            }
423            Self::RegExpLiteral(it) => {
424                ArrayExpressionElement::RegExpLiteral(CloneIn::clone_in(it, allocator))
425            }
426            Self::StringLiteral(it) => {
427                ArrayExpressionElement::StringLiteral(CloneIn::clone_in(it, allocator))
428            }
429            Self::TemplateLiteral(it) => {
430                ArrayExpressionElement::TemplateLiteral(CloneIn::clone_in(it, allocator))
431            }
432            Self::Identifier(it) => {
433                ArrayExpressionElement::Identifier(CloneIn::clone_in(it, allocator))
434            }
435            Self::MetaProperty(it) => {
436                ArrayExpressionElement::MetaProperty(CloneIn::clone_in(it, allocator))
437            }
438            Self::Super(it) => ArrayExpressionElement::Super(CloneIn::clone_in(it, allocator)),
439            Self::ArrayExpression(it) => {
440                ArrayExpressionElement::ArrayExpression(CloneIn::clone_in(it, allocator))
441            }
442            Self::ArrowFunctionExpression(it) => {
443                ArrayExpressionElement::ArrowFunctionExpression(CloneIn::clone_in(it, allocator))
444            }
445            Self::AssignmentExpression(it) => {
446                ArrayExpressionElement::AssignmentExpression(CloneIn::clone_in(it, allocator))
447            }
448            Self::AwaitExpression(it) => {
449                ArrayExpressionElement::AwaitExpression(CloneIn::clone_in(it, allocator))
450            }
451            Self::BinaryExpression(it) => {
452                ArrayExpressionElement::BinaryExpression(CloneIn::clone_in(it, allocator))
453            }
454            Self::CallExpression(it) => {
455                ArrayExpressionElement::CallExpression(CloneIn::clone_in(it, allocator))
456            }
457            Self::ChainExpression(it) => {
458                ArrayExpressionElement::ChainExpression(CloneIn::clone_in(it, allocator))
459            }
460            Self::ClassExpression(it) => {
461                ArrayExpressionElement::ClassExpression(CloneIn::clone_in(it, allocator))
462            }
463            Self::ConditionalExpression(it) => {
464                ArrayExpressionElement::ConditionalExpression(CloneIn::clone_in(it, allocator))
465            }
466            Self::FunctionExpression(it) => {
467                ArrayExpressionElement::FunctionExpression(CloneIn::clone_in(it, allocator))
468            }
469            Self::ImportExpression(it) => {
470                ArrayExpressionElement::ImportExpression(CloneIn::clone_in(it, allocator))
471            }
472            Self::LogicalExpression(it) => {
473                ArrayExpressionElement::LogicalExpression(CloneIn::clone_in(it, allocator))
474            }
475            Self::NewExpression(it) => {
476                ArrayExpressionElement::NewExpression(CloneIn::clone_in(it, allocator))
477            }
478            Self::ObjectExpression(it) => {
479                ArrayExpressionElement::ObjectExpression(CloneIn::clone_in(it, allocator))
480            }
481            Self::ParenthesizedExpression(it) => {
482                ArrayExpressionElement::ParenthesizedExpression(CloneIn::clone_in(it, allocator))
483            }
484            Self::SequenceExpression(it) => {
485                ArrayExpressionElement::SequenceExpression(CloneIn::clone_in(it, allocator))
486            }
487            Self::TaggedTemplateExpression(it) => {
488                ArrayExpressionElement::TaggedTemplateExpression(CloneIn::clone_in(it, allocator))
489            }
490            Self::ThisExpression(it) => {
491                ArrayExpressionElement::ThisExpression(CloneIn::clone_in(it, allocator))
492            }
493            Self::UnaryExpression(it) => {
494                ArrayExpressionElement::UnaryExpression(CloneIn::clone_in(it, allocator))
495            }
496            Self::UpdateExpression(it) => {
497                ArrayExpressionElement::UpdateExpression(CloneIn::clone_in(it, allocator))
498            }
499            Self::YieldExpression(it) => {
500                ArrayExpressionElement::YieldExpression(CloneIn::clone_in(it, allocator))
501            }
502            Self::PrivateInExpression(it) => {
503                ArrayExpressionElement::PrivateInExpression(CloneIn::clone_in(it, allocator))
504            }
505            Self::JSXElement(it) => {
506                ArrayExpressionElement::JSXElement(CloneIn::clone_in(it, allocator))
507            }
508            Self::JSXFragment(it) => {
509                ArrayExpressionElement::JSXFragment(CloneIn::clone_in(it, allocator))
510            }
511            Self::TSAsExpression(it) => {
512                ArrayExpressionElement::TSAsExpression(CloneIn::clone_in(it, allocator))
513            }
514            Self::TSSatisfiesExpression(it) => {
515                ArrayExpressionElement::TSSatisfiesExpression(CloneIn::clone_in(it, allocator))
516            }
517            Self::TSTypeAssertion(it) => {
518                ArrayExpressionElement::TSTypeAssertion(CloneIn::clone_in(it, allocator))
519            }
520            Self::TSNonNullExpression(it) => {
521                ArrayExpressionElement::TSNonNullExpression(CloneIn::clone_in(it, allocator))
522            }
523            Self::TSInstantiationExpression(it) => {
524                ArrayExpressionElement::TSInstantiationExpression(CloneIn::clone_in(it, allocator))
525            }
526            Self::V8IntrinsicExpression(it) => {
527                ArrayExpressionElement::V8IntrinsicExpression(CloneIn::clone_in(it, allocator))
528            }
529            Self::ComputedMemberExpression(it) => {
530                ArrayExpressionElement::ComputedMemberExpression(CloneIn::clone_in(it, allocator))
531            }
532            Self::StaticMemberExpression(it) => {
533                ArrayExpressionElement::StaticMemberExpression(CloneIn::clone_in(it, allocator))
534            }
535            Self::PrivateFieldExpression(it) => {
536                ArrayExpressionElement::PrivateFieldExpression(CloneIn::clone_in(it, allocator))
537            }
538        }
539    }
540
541    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
542        match self {
543            Self::SpreadElement(it) => ArrayExpressionElement::SpreadElement(
544                CloneIn::clone_in_with_semantic_ids(it, allocator),
545            ),
546            Self::Elision(it) => {
547                ArrayExpressionElement::Elision(CloneIn::clone_in_with_semantic_ids(it, allocator))
548            }
549            Self::BooleanLiteral(it) => ArrayExpressionElement::BooleanLiteral(
550                CloneIn::clone_in_with_semantic_ids(it, allocator),
551            ),
552            Self::NullLiteral(it) => ArrayExpressionElement::NullLiteral(
553                CloneIn::clone_in_with_semantic_ids(it, allocator),
554            ),
555            Self::NumericLiteral(it) => ArrayExpressionElement::NumericLiteral(
556                CloneIn::clone_in_with_semantic_ids(it, allocator),
557            ),
558            Self::BigIntLiteral(it) => ArrayExpressionElement::BigIntLiteral(
559                CloneIn::clone_in_with_semantic_ids(it, allocator),
560            ),
561            Self::RegExpLiteral(it) => ArrayExpressionElement::RegExpLiteral(
562                CloneIn::clone_in_with_semantic_ids(it, allocator),
563            ),
564            Self::StringLiteral(it) => ArrayExpressionElement::StringLiteral(
565                CloneIn::clone_in_with_semantic_ids(it, allocator),
566            ),
567            Self::TemplateLiteral(it) => ArrayExpressionElement::TemplateLiteral(
568                CloneIn::clone_in_with_semantic_ids(it, allocator),
569            ),
570            Self::Identifier(it) => ArrayExpressionElement::Identifier(
571                CloneIn::clone_in_with_semantic_ids(it, allocator),
572            ),
573            Self::MetaProperty(it) => ArrayExpressionElement::MetaProperty(
574                CloneIn::clone_in_with_semantic_ids(it, allocator),
575            ),
576            Self::Super(it) => {
577                ArrayExpressionElement::Super(CloneIn::clone_in_with_semantic_ids(it, allocator))
578            }
579            Self::ArrayExpression(it) => ArrayExpressionElement::ArrayExpression(
580                CloneIn::clone_in_with_semantic_ids(it, allocator),
581            ),
582            Self::ArrowFunctionExpression(it) => ArrayExpressionElement::ArrowFunctionExpression(
583                CloneIn::clone_in_with_semantic_ids(it, allocator),
584            ),
585            Self::AssignmentExpression(it) => ArrayExpressionElement::AssignmentExpression(
586                CloneIn::clone_in_with_semantic_ids(it, allocator),
587            ),
588            Self::AwaitExpression(it) => ArrayExpressionElement::AwaitExpression(
589                CloneIn::clone_in_with_semantic_ids(it, allocator),
590            ),
591            Self::BinaryExpression(it) => ArrayExpressionElement::BinaryExpression(
592                CloneIn::clone_in_with_semantic_ids(it, allocator),
593            ),
594            Self::CallExpression(it) => ArrayExpressionElement::CallExpression(
595                CloneIn::clone_in_with_semantic_ids(it, allocator),
596            ),
597            Self::ChainExpression(it) => ArrayExpressionElement::ChainExpression(
598                CloneIn::clone_in_with_semantic_ids(it, allocator),
599            ),
600            Self::ClassExpression(it) => ArrayExpressionElement::ClassExpression(
601                CloneIn::clone_in_with_semantic_ids(it, allocator),
602            ),
603            Self::ConditionalExpression(it) => ArrayExpressionElement::ConditionalExpression(
604                CloneIn::clone_in_with_semantic_ids(it, allocator),
605            ),
606            Self::FunctionExpression(it) => ArrayExpressionElement::FunctionExpression(
607                CloneIn::clone_in_with_semantic_ids(it, allocator),
608            ),
609            Self::ImportExpression(it) => ArrayExpressionElement::ImportExpression(
610                CloneIn::clone_in_with_semantic_ids(it, allocator),
611            ),
612            Self::LogicalExpression(it) => ArrayExpressionElement::LogicalExpression(
613                CloneIn::clone_in_with_semantic_ids(it, allocator),
614            ),
615            Self::NewExpression(it) => ArrayExpressionElement::NewExpression(
616                CloneIn::clone_in_with_semantic_ids(it, allocator),
617            ),
618            Self::ObjectExpression(it) => ArrayExpressionElement::ObjectExpression(
619                CloneIn::clone_in_with_semantic_ids(it, allocator),
620            ),
621            Self::ParenthesizedExpression(it) => ArrayExpressionElement::ParenthesizedExpression(
622                CloneIn::clone_in_with_semantic_ids(it, allocator),
623            ),
624            Self::SequenceExpression(it) => ArrayExpressionElement::SequenceExpression(
625                CloneIn::clone_in_with_semantic_ids(it, allocator),
626            ),
627            Self::TaggedTemplateExpression(it) => ArrayExpressionElement::TaggedTemplateExpression(
628                CloneIn::clone_in_with_semantic_ids(it, allocator),
629            ),
630            Self::ThisExpression(it) => ArrayExpressionElement::ThisExpression(
631                CloneIn::clone_in_with_semantic_ids(it, allocator),
632            ),
633            Self::UnaryExpression(it) => ArrayExpressionElement::UnaryExpression(
634                CloneIn::clone_in_with_semantic_ids(it, allocator),
635            ),
636            Self::UpdateExpression(it) => ArrayExpressionElement::UpdateExpression(
637                CloneIn::clone_in_with_semantic_ids(it, allocator),
638            ),
639            Self::YieldExpression(it) => ArrayExpressionElement::YieldExpression(
640                CloneIn::clone_in_with_semantic_ids(it, allocator),
641            ),
642            Self::PrivateInExpression(it) => ArrayExpressionElement::PrivateInExpression(
643                CloneIn::clone_in_with_semantic_ids(it, allocator),
644            ),
645            Self::JSXElement(it) => ArrayExpressionElement::JSXElement(
646                CloneIn::clone_in_with_semantic_ids(it, allocator),
647            ),
648            Self::JSXFragment(it) => ArrayExpressionElement::JSXFragment(
649                CloneIn::clone_in_with_semantic_ids(it, allocator),
650            ),
651            Self::TSAsExpression(it) => ArrayExpressionElement::TSAsExpression(
652                CloneIn::clone_in_with_semantic_ids(it, allocator),
653            ),
654            Self::TSSatisfiesExpression(it) => ArrayExpressionElement::TSSatisfiesExpression(
655                CloneIn::clone_in_with_semantic_ids(it, allocator),
656            ),
657            Self::TSTypeAssertion(it) => ArrayExpressionElement::TSTypeAssertion(
658                CloneIn::clone_in_with_semantic_ids(it, allocator),
659            ),
660            Self::TSNonNullExpression(it) => ArrayExpressionElement::TSNonNullExpression(
661                CloneIn::clone_in_with_semantic_ids(it, allocator),
662            ),
663            Self::TSInstantiationExpression(it) => {
664                ArrayExpressionElement::TSInstantiationExpression(
665                    CloneIn::clone_in_with_semantic_ids(it, allocator),
666                )
667            }
668            Self::V8IntrinsicExpression(it) => ArrayExpressionElement::V8IntrinsicExpression(
669                CloneIn::clone_in_with_semantic_ids(it, allocator),
670            ),
671            Self::ComputedMemberExpression(it) => ArrayExpressionElement::ComputedMemberExpression(
672                CloneIn::clone_in_with_semantic_ids(it, allocator),
673            ),
674            Self::StaticMemberExpression(it) => ArrayExpressionElement::StaticMemberExpression(
675                CloneIn::clone_in_with_semantic_ids(it, allocator),
676            ),
677            Self::PrivateFieldExpression(it) => ArrayExpressionElement::PrivateFieldExpression(
678                CloneIn::clone_in_with_semantic_ids(it, allocator),
679            ),
680        }
681    }
682}
683
684impl<'new_alloc> CloneIn<'new_alloc> for Elision {
685    type Cloned = Elision;
686
687    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
688        Elision { span: CloneIn::clone_in(&self.span, allocator) }
689    }
690
691    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
692        Elision { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
693    }
694}
695
696impl<'new_alloc> CloneIn<'new_alloc> for ObjectExpression<'_> {
697    type Cloned = ObjectExpression<'new_alloc>;
698
699    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
700        ObjectExpression {
701            span: CloneIn::clone_in(&self.span, allocator),
702            properties: CloneIn::clone_in(&self.properties, allocator),
703        }
704    }
705
706    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
707        ObjectExpression {
708            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
709            properties: CloneIn::clone_in_with_semantic_ids(&self.properties, allocator),
710        }
711    }
712}
713
714impl<'new_alloc> CloneIn<'new_alloc> for ObjectPropertyKind<'_> {
715    type Cloned = ObjectPropertyKind<'new_alloc>;
716
717    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
718        match self {
719            Self::ObjectProperty(it) => {
720                ObjectPropertyKind::ObjectProperty(CloneIn::clone_in(it, allocator))
721            }
722            Self::SpreadProperty(it) => {
723                ObjectPropertyKind::SpreadProperty(CloneIn::clone_in(it, allocator))
724            }
725        }
726    }
727
728    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
729        match self {
730            Self::ObjectProperty(it) => ObjectPropertyKind::ObjectProperty(
731                CloneIn::clone_in_with_semantic_ids(it, allocator),
732            ),
733            Self::SpreadProperty(it) => ObjectPropertyKind::SpreadProperty(
734                CloneIn::clone_in_with_semantic_ids(it, allocator),
735            ),
736        }
737    }
738}
739
740impl<'new_alloc> CloneIn<'new_alloc> for ObjectProperty<'_> {
741    type Cloned = ObjectProperty<'new_alloc>;
742
743    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
744        ObjectProperty {
745            span: CloneIn::clone_in(&self.span, allocator),
746            kind: CloneIn::clone_in(&self.kind, allocator),
747            key: CloneIn::clone_in(&self.key, allocator),
748            value: CloneIn::clone_in(&self.value, allocator),
749            method: CloneIn::clone_in(&self.method, allocator),
750            shorthand: CloneIn::clone_in(&self.shorthand, allocator),
751            computed: CloneIn::clone_in(&self.computed, allocator),
752        }
753    }
754
755    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
756        ObjectProperty {
757            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
758            kind: CloneIn::clone_in_with_semantic_ids(&self.kind, allocator),
759            key: CloneIn::clone_in_with_semantic_ids(&self.key, allocator),
760            value: CloneIn::clone_in_with_semantic_ids(&self.value, allocator),
761            method: CloneIn::clone_in_with_semantic_ids(&self.method, allocator),
762            shorthand: CloneIn::clone_in_with_semantic_ids(&self.shorthand, allocator),
763            computed: CloneIn::clone_in_with_semantic_ids(&self.computed, allocator),
764        }
765    }
766}
767
768impl<'new_alloc> CloneIn<'new_alloc> for PropertyKey<'_> {
769    type Cloned = PropertyKey<'new_alloc>;
770
771    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
772        match self {
773            Self::StaticIdentifier(it) => {
774                PropertyKey::StaticIdentifier(CloneIn::clone_in(it, allocator))
775            }
776            Self::PrivateIdentifier(it) => {
777                PropertyKey::PrivateIdentifier(CloneIn::clone_in(it, allocator))
778            }
779            Self::BooleanLiteral(it) => {
780                PropertyKey::BooleanLiteral(CloneIn::clone_in(it, allocator))
781            }
782            Self::NullLiteral(it) => PropertyKey::NullLiteral(CloneIn::clone_in(it, allocator)),
783            Self::NumericLiteral(it) => {
784                PropertyKey::NumericLiteral(CloneIn::clone_in(it, allocator))
785            }
786            Self::BigIntLiteral(it) => PropertyKey::BigIntLiteral(CloneIn::clone_in(it, allocator)),
787            Self::RegExpLiteral(it) => PropertyKey::RegExpLiteral(CloneIn::clone_in(it, allocator)),
788            Self::StringLiteral(it) => PropertyKey::StringLiteral(CloneIn::clone_in(it, allocator)),
789            Self::TemplateLiteral(it) => {
790                PropertyKey::TemplateLiteral(CloneIn::clone_in(it, allocator))
791            }
792            Self::Identifier(it) => PropertyKey::Identifier(CloneIn::clone_in(it, allocator)),
793            Self::MetaProperty(it) => PropertyKey::MetaProperty(CloneIn::clone_in(it, allocator)),
794            Self::Super(it) => PropertyKey::Super(CloneIn::clone_in(it, allocator)),
795            Self::ArrayExpression(it) => {
796                PropertyKey::ArrayExpression(CloneIn::clone_in(it, allocator))
797            }
798            Self::ArrowFunctionExpression(it) => {
799                PropertyKey::ArrowFunctionExpression(CloneIn::clone_in(it, allocator))
800            }
801            Self::AssignmentExpression(it) => {
802                PropertyKey::AssignmentExpression(CloneIn::clone_in(it, allocator))
803            }
804            Self::AwaitExpression(it) => {
805                PropertyKey::AwaitExpression(CloneIn::clone_in(it, allocator))
806            }
807            Self::BinaryExpression(it) => {
808                PropertyKey::BinaryExpression(CloneIn::clone_in(it, allocator))
809            }
810            Self::CallExpression(it) => {
811                PropertyKey::CallExpression(CloneIn::clone_in(it, allocator))
812            }
813            Self::ChainExpression(it) => {
814                PropertyKey::ChainExpression(CloneIn::clone_in(it, allocator))
815            }
816            Self::ClassExpression(it) => {
817                PropertyKey::ClassExpression(CloneIn::clone_in(it, allocator))
818            }
819            Self::ConditionalExpression(it) => {
820                PropertyKey::ConditionalExpression(CloneIn::clone_in(it, allocator))
821            }
822            Self::FunctionExpression(it) => {
823                PropertyKey::FunctionExpression(CloneIn::clone_in(it, allocator))
824            }
825            Self::ImportExpression(it) => {
826                PropertyKey::ImportExpression(CloneIn::clone_in(it, allocator))
827            }
828            Self::LogicalExpression(it) => {
829                PropertyKey::LogicalExpression(CloneIn::clone_in(it, allocator))
830            }
831            Self::NewExpression(it) => PropertyKey::NewExpression(CloneIn::clone_in(it, allocator)),
832            Self::ObjectExpression(it) => {
833                PropertyKey::ObjectExpression(CloneIn::clone_in(it, allocator))
834            }
835            Self::ParenthesizedExpression(it) => {
836                PropertyKey::ParenthesizedExpression(CloneIn::clone_in(it, allocator))
837            }
838            Self::SequenceExpression(it) => {
839                PropertyKey::SequenceExpression(CloneIn::clone_in(it, allocator))
840            }
841            Self::TaggedTemplateExpression(it) => {
842                PropertyKey::TaggedTemplateExpression(CloneIn::clone_in(it, allocator))
843            }
844            Self::ThisExpression(it) => {
845                PropertyKey::ThisExpression(CloneIn::clone_in(it, allocator))
846            }
847            Self::UnaryExpression(it) => {
848                PropertyKey::UnaryExpression(CloneIn::clone_in(it, allocator))
849            }
850            Self::UpdateExpression(it) => {
851                PropertyKey::UpdateExpression(CloneIn::clone_in(it, allocator))
852            }
853            Self::YieldExpression(it) => {
854                PropertyKey::YieldExpression(CloneIn::clone_in(it, allocator))
855            }
856            Self::PrivateInExpression(it) => {
857                PropertyKey::PrivateInExpression(CloneIn::clone_in(it, allocator))
858            }
859            Self::JSXElement(it) => PropertyKey::JSXElement(CloneIn::clone_in(it, allocator)),
860            Self::JSXFragment(it) => PropertyKey::JSXFragment(CloneIn::clone_in(it, allocator)),
861            Self::TSAsExpression(it) => {
862                PropertyKey::TSAsExpression(CloneIn::clone_in(it, allocator))
863            }
864            Self::TSSatisfiesExpression(it) => {
865                PropertyKey::TSSatisfiesExpression(CloneIn::clone_in(it, allocator))
866            }
867            Self::TSTypeAssertion(it) => {
868                PropertyKey::TSTypeAssertion(CloneIn::clone_in(it, allocator))
869            }
870            Self::TSNonNullExpression(it) => {
871                PropertyKey::TSNonNullExpression(CloneIn::clone_in(it, allocator))
872            }
873            Self::TSInstantiationExpression(it) => {
874                PropertyKey::TSInstantiationExpression(CloneIn::clone_in(it, allocator))
875            }
876            Self::V8IntrinsicExpression(it) => {
877                PropertyKey::V8IntrinsicExpression(CloneIn::clone_in(it, allocator))
878            }
879            Self::ComputedMemberExpression(it) => {
880                PropertyKey::ComputedMemberExpression(CloneIn::clone_in(it, allocator))
881            }
882            Self::StaticMemberExpression(it) => {
883                PropertyKey::StaticMemberExpression(CloneIn::clone_in(it, allocator))
884            }
885            Self::PrivateFieldExpression(it) => {
886                PropertyKey::PrivateFieldExpression(CloneIn::clone_in(it, allocator))
887            }
888        }
889    }
890
891    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
892        match self {
893            Self::StaticIdentifier(it) => {
894                PropertyKey::StaticIdentifier(CloneIn::clone_in_with_semantic_ids(it, allocator))
895            }
896            Self::PrivateIdentifier(it) => {
897                PropertyKey::PrivateIdentifier(CloneIn::clone_in_with_semantic_ids(it, allocator))
898            }
899            Self::BooleanLiteral(it) => {
900                PropertyKey::BooleanLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
901            }
902            Self::NullLiteral(it) => {
903                PropertyKey::NullLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
904            }
905            Self::NumericLiteral(it) => {
906                PropertyKey::NumericLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
907            }
908            Self::BigIntLiteral(it) => {
909                PropertyKey::BigIntLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
910            }
911            Self::RegExpLiteral(it) => {
912                PropertyKey::RegExpLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
913            }
914            Self::StringLiteral(it) => {
915                PropertyKey::StringLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
916            }
917            Self::TemplateLiteral(it) => {
918                PropertyKey::TemplateLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
919            }
920            Self::Identifier(it) => {
921                PropertyKey::Identifier(CloneIn::clone_in_with_semantic_ids(it, allocator))
922            }
923            Self::MetaProperty(it) => {
924                PropertyKey::MetaProperty(CloneIn::clone_in_with_semantic_ids(it, allocator))
925            }
926            Self::Super(it) => {
927                PropertyKey::Super(CloneIn::clone_in_with_semantic_ids(it, allocator))
928            }
929            Self::ArrayExpression(it) => {
930                PropertyKey::ArrayExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
931            }
932            Self::ArrowFunctionExpression(it) => PropertyKey::ArrowFunctionExpression(
933                CloneIn::clone_in_with_semantic_ids(it, allocator),
934            ),
935            Self::AssignmentExpression(it) => PropertyKey::AssignmentExpression(
936                CloneIn::clone_in_with_semantic_ids(it, allocator),
937            ),
938            Self::AwaitExpression(it) => {
939                PropertyKey::AwaitExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
940            }
941            Self::BinaryExpression(it) => {
942                PropertyKey::BinaryExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
943            }
944            Self::CallExpression(it) => {
945                PropertyKey::CallExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
946            }
947            Self::ChainExpression(it) => {
948                PropertyKey::ChainExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
949            }
950            Self::ClassExpression(it) => {
951                PropertyKey::ClassExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
952            }
953            Self::ConditionalExpression(it) => PropertyKey::ConditionalExpression(
954                CloneIn::clone_in_with_semantic_ids(it, allocator),
955            ),
956            Self::FunctionExpression(it) => {
957                PropertyKey::FunctionExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
958            }
959            Self::ImportExpression(it) => {
960                PropertyKey::ImportExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
961            }
962            Self::LogicalExpression(it) => {
963                PropertyKey::LogicalExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
964            }
965            Self::NewExpression(it) => {
966                PropertyKey::NewExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
967            }
968            Self::ObjectExpression(it) => {
969                PropertyKey::ObjectExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
970            }
971            Self::ParenthesizedExpression(it) => PropertyKey::ParenthesizedExpression(
972                CloneIn::clone_in_with_semantic_ids(it, allocator),
973            ),
974            Self::SequenceExpression(it) => {
975                PropertyKey::SequenceExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
976            }
977            Self::TaggedTemplateExpression(it) => PropertyKey::TaggedTemplateExpression(
978                CloneIn::clone_in_with_semantic_ids(it, allocator),
979            ),
980            Self::ThisExpression(it) => {
981                PropertyKey::ThisExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
982            }
983            Self::UnaryExpression(it) => {
984                PropertyKey::UnaryExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
985            }
986            Self::UpdateExpression(it) => {
987                PropertyKey::UpdateExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
988            }
989            Self::YieldExpression(it) => {
990                PropertyKey::YieldExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
991            }
992            Self::PrivateInExpression(it) => {
993                PropertyKey::PrivateInExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
994            }
995            Self::JSXElement(it) => {
996                PropertyKey::JSXElement(CloneIn::clone_in_with_semantic_ids(it, allocator))
997            }
998            Self::JSXFragment(it) => {
999                PropertyKey::JSXFragment(CloneIn::clone_in_with_semantic_ids(it, allocator))
1000            }
1001            Self::TSAsExpression(it) => {
1002                PropertyKey::TSAsExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1003            }
1004            Self::TSSatisfiesExpression(it) => PropertyKey::TSSatisfiesExpression(
1005                CloneIn::clone_in_with_semantic_ids(it, allocator),
1006            ),
1007            Self::TSTypeAssertion(it) => {
1008                PropertyKey::TSTypeAssertion(CloneIn::clone_in_with_semantic_ids(it, allocator))
1009            }
1010            Self::TSNonNullExpression(it) => {
1011                PropertyKey::TSNonNullExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1012            }
1013            Self::TSInstantiationExpression(it) => PropertyKey::TSInstantiationExpression(
1014                CloneIn::clone_in_with_semantic_ids(it, allocator),
1015            ),
1016            Self::V8IntrinsicExpression(it) => PropertyKey::V8IntrinsicExpression(
1017                CloneIn::clone_in_with_semantic_ids(it, allocator),
1018            ),
1019            Self::ComputedMemberExpression(it) => PropertyKey::ComputedMemberExpression(
1020                CloneIn::clone_in_with_semantic_ids(it, allocator),
1021            ),
1022            Self::StaticMemberExpression(it) => PropertyKey::StaticMemberExpression(
1023                CloneIn::clone_in_with_semantic_ids(it, allocator),
1024            ),
1025            Self::PrivateFieldExpression(it) => PropertyKey::PrivateFieldExpression(
1026                CloneIn::clone_in_with_semantic_ids(it, allocator),
1027            ),
1028        }
1029    }
1030}
1031
1032impl<'new_alloc> CloneIn<'new_alloc> for PropertyKind {
1033    type Cloned = PropertyKind;
1034
1035    #[inline(always)]
1036    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1037        *self
1038    }
1039
1040    #[inline(always)]
1041    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1042        *self
1043    }
1044}
1045
1046impl<'new_alloc> CloneIn<'new_alloc> for TemplateLiteral<'_> {
1047    type Cloned = TemplateLiteral<'new_alloc>;
1048
1049    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1050        TemplateLiteral {
1051            span: CloneIn::clone_in(&self.span, allocator),
1052            quasis: CloneIn::clone_in(&self.quasis, allocator),
1053            expressions: CloneIn::clone_in(&self.expressions, allocator),
1054        }
1055    }
1056
1057    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1058        TemplateLiteral {
1059            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1060            quasis: CloneIn::clone_in_with_semantic_ids(&self.quasis, allocator),
1061            expressions: CloneIn::clone_in_with_semantic_ids(&self.expressions, allocator),
1062        }
1063    }
1064}
1065
1066impl<'new_alloc> CloneIn<'new_alloc> for TaggedTemplateExpression<'_> {
1067    type Cloned = TaggedTemplateExpression<'new_alloc>;
1068
1069    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1070        TaggedTemplateExpression {
1071            span: CloneIn::clone_in(&self.span, allocator),
1072            tag: CloneIn::clone_in(&self.tag, allocator),
1073            type_arguments: CloneIn::clone_in(&self.type_arguments, allocator),
1074            quasi: CloneIn::clone_in(&self.quasi, allocator),
1075        }
1076    }
1077
1078    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1079        TaggedTemplateExpression {
1080            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1081            tag: CloneIn::clone_in_with_semantic_ids(&self.tag, allocator),
1082            type_arguments: CloneIn::clone_in_with_semantic_ids(&self.type_arguments, allocator),
1083            quasi: CloneIn::clone_in_with_semantic_ids(&self.quasi, allocator),
1084        }
1085    }
1086}
1087
1088impl<'new_alloc> CloneIn<'new_alloc> for TemplateElement<'_> {
1089    type Cloned = TemplateElement<'new_alloc>;
1090
1091    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1092        TemplateElement {
1093            span: CloneIn::clone_in(&self.span, allocator),
1094            value: CloneIn::clone_in(&self.value, allocator),
1095            tail: CloneIn::clone_in(&self.tail, allocator),
1096            lone_surrogates: CloneIn::clone_in(&self.lone_surrogates, allocator),
1097        }
1098    }
1099
1100    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1101        TemplateElement {
1102            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1103            value: CloneIn::clone_in_with_semantic_ids(&self.value, allocator),
1104            tail: CloneIn::clone_in_with_semantic_ids(&self.tail, allocator),
1105            lone_surrogates: CloneIn::clone_in_with_semantic_ids(&self.lone_surrogates, allocator),
1106        }
1107    }
1108}
1109
1110impl<'new_alloc> CloneIn<'new_alloc> for TemplateElementValue<'_> {
1111    type Cloned = TemplateElementValue<'new_alloc>;
1112
1113    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1114        TemplateElementValue {
1115            raw: CloneIn::clone_in(&self.raw, allocator),
1116            cooked: CloneIn::clone_in(&self.cooked, allocator),
1117        }
1118    }
1119
1120    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1121        TemplateElementValue {
1122            raw: CloneIn::clone_in_with_semantic_ids(&self.raw, allocator),
1123            cooked: CloneIn::clone_in_with_semantic_ids(&self.cooked, allocator),
1124        }
1125    }
1126}
1127
1128impl<'new_alloc> CloneIn<'new_alloc> for MemberExpression<'_> {
1129    type Cloned = MemberExpression<'new_alloc>;
1130
1131    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1132        match self {
1133            Self::ComputedMemberExpression(it) => {
1134                MemberExpression::ComputedMemberExpression(CloneIn::clone_in(it, allocator))
1135            }
1136            Self::StaticMemberExpression(it) => {
1137                MemberExpression::StaticMemberExpression(CloneIn::clone_in(it, allocator))
1138            }
1139            Self::PrivateFieldExpression(it) => {
1140                MemberExpression::PrivateFieldExpression(CloneIn::clone_in(it, allocator))
1141            }
1142        }
1143    }
1144
1145    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1146        match self {
1147            Self::ComputedMemberExpression(it) => MemberExpression::ComputedMemberExpression(
1148                CloneIn::clone_in_with_semantic_ids(it, allocator),
1149            ),
1150            Self::StaticMemberExpression(it) => MemberExpression::StaticMemberExpression(
1151                CloneIn::clone_in_with_semantic_ids(it, allocator),
1152            ),
1153            Self::PrivateFieldExpression(it) => MemberExpression::PrivateFieldExpression(
1154                CloneIn::clone_in_with_semantic_ids(it, allocator),
1155            ),
1156        }
1157    }
1158}
1159
1160impl<'new_alloc> CloneIn<'new_alloc> for ComputedMemberExpression<'_> {
1161    type Cloned = ComputedMemberExpression<'new_alloc>;
1162
1163    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1164        ComputedMemberExpression {
1165            span: CloneIn::clone_in(&self.span, allocator),
1166            object: CloneIn::clone_in(&self.object, allocator),
1167            expression: CloneIn::clone_in(&self.expression, allocator),
1168            optional: CloneIn::clone_in(&self.optional, allocator),
1169        }
1170    }
1171
1172    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1173        ComputedMemberExpression {
1174            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1175            object: CloneIn::clone_in_with_semantic_ids(&self.object, allocator),
1176            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
1177            optional: CloneIn::clone_in_with_semantic_ids(&self.optional, allocator),
1178        }
1179    }
1180}
1181
1182impl<'new_alloc> CloneIn<'new_alloc> for StaticMemberExpression<'_> {
1183    type Cloned = StaticMemberExpression<'new_alloc>;
1184
1185    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1186        StaticMemberExpression {
1187            span: CloneIn::clone_in(&self.span, allocator),
1188            object: CloneIn::clone_in(&self.object, allocator),
1189            property: CloneIn::clone_in(&self.property, allocator),
1190            optional: CloneIn::clone_in(&self.optional, allocator),
1191        }
1192    }
1193
1194    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1195        StaticMemberExpression {
1196            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1197            object: CloneIn::clone_in_with_semantic_ids(&self.object, allocator),
1198            property: CloneIn::clone_in_with_semantic_ids(&self.property, allocator),
1199            optional: CloneIn::clone_in_with_semantic_ids(&self.optional, allocator),
1200        }
1201    }
1202}
1203
1204impl<'new_alloc> CloneIn<'new_alloc> for PrivateFieldExpression<'_> {
1205    type Cloned = PrivateFieldExpression<'new_alloc>;
1206
1207    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1208        PrivateFieldExpression {
1209            span: CloneIn::clone_in(&self.span, allocator),
1210            object: CloneIn::clone_in(&self.object, allocator),
1211            field: CloneIn::clone_in(&self.field, allocator),
1212            optional: CloneIn::clone_in(&self.optional, allocator),
1213        }
1214    }
1215
1216    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1217        PrivateFieldExpression {
1218            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1219            object: CloneIn::clone_in_with_semantic_ids(&self.object, allocator),
1220            field: CloneIn::clone_in_with_semantic_ids(&self.field, allocator),
1221            optional: CloneIn::clone_in_with_semantic_ids(&self.optional, allocator),
1222        }
1223    }
1224}
1225
1226impl<'new_alloc> CloneIn<'new_alloc> for CallExpression<'_> {
1227    type Cloned = CallExpression<'new_alloc>;
1228
1229    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1230        CallExpression {
1231            span: CloneIn::clone_in(&self.span, allocator),
1232            callee: CloneIn::clone_in(&self.callee, allocator),
1233            type_arguments: CloneIn::clone_in(&self.type_arguments, allocator),
1234            arguments: CloneIn::clone_in(&self.arguments, allocator),
1235            optional: CloneIn::clone_in(&self.optional, allocator),
1236            pure: CloneIn::clone_in(&self.pure, allocator),
1237        }
1238    }
1239
1240    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1241        CallExpression {
1242            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1243            callee: CloneIn::clone_in_with_semantic_ids(&self.callee, allocator),
1244            type_arguments: CloneIn::clone_in_with_semantic_ids(&self.type_arguments, allocator),
1245            arguments: CloneIn::clone_in_with_semantic_ids(&self.arguments, allocator),
1246            optional: CloneIn::clone_in_with_semantic_ids(&self.optional, allocator),
1247            pure: CloneIn::clone_in_with_semantic_ids(&self.pure, allocator),
1248        }
1249    }
1250}
1251
1252impl<'new_alloc> CloneIn<'new_alloc> for NewExpression<'_> {
1253    type Cloned = NewExpression<'new_alloc>;
1254
1255    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1256        NewExpression {
1257            span: CloneIn::clone_in(&self.span, allocator),
1258            callee: CloneIn::clone_in(&self.callee, allocator),
1259            type_arguments: CloneIn::clone_in(&self.type_arguments, allocator),
1260            arguments: CloneIn::clone_in(&self.arguments, allocator),
1261            pure: CloneIn::clone_in(&self.pure, allocator),
1262        }
1263    }
1264
1265    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1266        NewExpression {
1267            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1268            callee: CloneIn::clone_in_with_semantic_ids(&self.callee, allocator),
1269            type_arguments: CloneIn::clone_in_with_semantic_ids(&self.type_arguments, allocator),
1270            arguments: CloneIn::clone_in_with_semantic_ids(&self.arguments, allocator),
1271            pure: CloneIn::clone_in_with_semantic_ids(&self.pure, allocator),
1272        }
1273    }
1274}
1275
1276impl<'new_alloc> CloneIn<'new_alloc> for MetaProperty<'_> {
1277    type Cloned = MetaProperty<'new_alloc>;
1278
1279    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1280        MetaProperty {
1281            span: CloneIn::clone_in(&self.span, allocator),
1282            meta: CloneIn::clone_in(&self.meta, allocator),
1283            property: CloneIn::clone_in(&self.property, allocator),
1284        }
1285    }
1286
1287    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1288        MetaProperty {
1289            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1290            meta: CloneIn::clone_in_with_semantic_ids(&self.meta, allocator),
1291            property: CloneIn::clone_in_with_semantic_ids(&self.property, allocator),
1292        }
1293    }
1294}
1295
1296impl<'new_alloc> CloneIn<'new_alloc> for SpreadElement<'_> {
1297    type Cloned = SpreadElement<'new_alloc>;
1298
1299    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1300        SpreadElement {
1301            span: CloneIn::clone_in(&self.span, allocator),
1302            argument: CloneIn::clone_in(&self.argument, allocator),
1303        }
1304    }
1305
1306    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1307        SpreadElement {
1308            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1309            argument: CloneIn::clone_in_with_semantic_ids(&self.argument, allocator),
1310        }
1311    }
1312}
1313
1314impl<'new_alloc> CloneIn<'new_alloc> for Argument<'_> {
1315    type Cloned = Argument<'new_alloc>;
1316
1317    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1318        match self {
1319            Self::SpreadElement(it) => Argument::SpreadElement(CloneIn::clone_in(it, allocator)),
1320            Self::BooleanLiteral(it) => Argument::BooleanLiteral(CloneIn::clone_in(it, allocator)),
1321            Self::NullLiteral(it) => Argument::NullLiteral(CloneIn::clone_in(it, allocator)),
1322            Self::NumericLiteral(it) => Argument::NumericLiteral(CloneIn::clone_in(it, allocator)),
1323            Self::BigIntLiteral(it) => Argument::BigIntLiteral(CloneIn::clone_in(it, allocator)),
1324            Self::RegExpLiteral(it) => Argument::RegExpLiteral(CloneIn::clone_in(it, allocator)),
1325            Self::StringLiteral(it) => Argument::StringLiteral(CloneIn::clone_in(it, allocator)),
1326            Self::TemplateLiteral(it) => {
1327                Argument::TemplateLiteral(CloneIn::clone_in(it, allocator))
1328            }
1329            Self::Identifier(it) => Argument::Identifier(CloneIn::clone_in(it, allocator)),
1330            Self::MetaProperty(it) => Argument::MetaProperty(CloneIn::clone_in(it, allocator)),
1331            Self::Super(it) => Argument::Super(CloneIn::clone_in(it, allocator)),
1332            Self::ArrayExpression(it) => {
1333                Argument::ArrayExpression(CloneIn::clone_in(it, allocator))
1334            }
1335            Self::ArrowFunctionExpression(it) => {
1336                Argument::ArrowFunctionExpression(CloneIn::clone_in(it, allocator))
1337            }
1338            Self::AssignmentExpression(it) => {
1339                Argument::AssignmentExpression(CloneIn::clone_in(it, allocator))
1340            }
1341            Self::AwaitExpression(it) => {
1342                Argument::AwaitExpression(CloneIn::clone_in(it, allocator))
1343            }
1344            Self::BinaryExpression(it) => {
1345                Argument::BinaryExpression(CloneIn::clone_in(it, allocator))
1346            }
1347            Self::CallExpression(it) => Argument::CallExpression(CloneIn::clone_in(it, allocator)),
1348            Self::ChainExpression(it) => {
1349                Argument::ChainExpression(CloneIn::clone_in(it, allocator))
1350            }
1351            Self::ClassExpression(it) => {
1352                Argument::ClassExpression(CloneIn::clone_in(it, allocator))
1353            }
1354            Self::ConditionalExpression(it) => {
1355                Argument::ConditionalExpression(CloneIn::clone_in(it, allocator))
1356            }
1357            Self::FunctionExpression(it) => {
1358                Argument::FunctionExpression(CloneIn::clone_in(it, allocator))
1359            }
1360            Self::ImportExpression(it) => {
1361                Argument::ImportExpression(CloneIn::clone_in(it, allocator))
1362            }
1363            Self::LogicalExpression(it) => {
1364                Argument::LogicalExpression(CloneIn::clone_in(it, allocator))
1365            }
1366            Self::NewExpression(it) => Argument::NewExpression(CloneIn::clone_in(it, allocator)),
1367            Self::ObjectExpression(it) => {
1368                Argument::ObjectExpression(CloneIn::clone_in(it, allocator))
1369            }
1370            Self::ParenthesizedExpression(it) => {
1371                Argument::ParenthesizedExpression(CloneIn::clone_in(it, allocator))
1372            }
1373            Self::SequenceExpression(it) => {
1374                Argument::SequenceExpression(CloneIn::clone_in(it, allocator))
1375            }
1376            Self::TaggedTemplateExpression(it) => {
1377                Argument::TaggedTemplateExpression(CloneIn::clone_in(it, allocator))
1378            }
1379            Self::ThisExpression(it) => Argument::ThisExpression(CloneIn::clone_in(it, allocator)),
1380            Self::UnaryExpression(it) => {
1381                Argument::UnaryExpression(CloneIn::clone_in(it, allocator))
1382            }
1383            Self::UpdateExpression(it) => {
1384                Argument::UpdateExpression(CloneIn::clone_in(it, allocator))
1385            }
1386            Self::YieldExpression(it) => {
1387                Argument::YieldExpression(CloneIn::clone_in(it, allocator))
1388            }
1389            Self::PrivateInExpression(it) => {
1390                Argument::PrivateInExpression(CloneIn::clone_in(it, allocator))
1391            }
1392            Self::JSXElement(it) => Argument::JSXElement(CloneIn::clone_in(it, allocator)),
1393            Self::JSXFragment(it) => Argument::JSXFragment(CloneIn::clone_in(it, allocator)),
1394            Self::TSAsExpression(it) => Argument::TSAsExpression(CloneIn::clone_in(it, allocator)),
1395            Self::TSSatisfiesExpression(it) => {
1396                Argument::TSSatisfiesExpression(CloneIn::clone_in(it, allocator))
1397            }
1398            Self::TSTypeAssertion(it) => {
1399                Argument::TSTypeAssertion(CloneIn::clone_in(it, allocator))
1400            }
1401            Self::TSNonNullExpression(it) => {
1402                Argument::TSNonNullExpression(CloneIn::clone_in(it, allocator))
1403            }
1404            Self::TSInstantiationExpression(it) => {
1405                Argument::TSInstantiationExpression(CloneIn::clone_in(it, allocator))
1406            }
1407            Self::V8IntrinsicExpression(it) => {
1408                Argument::V8IntrinsicExpression(CloneIn::clone_in(it, allocator))
1409            }
1410            Self::ComputedMemberExpression(it) => {
1411                Argument::ComputedMemberExpression(CloneIn::clone_in(it, allocator))
1412            }
1413            Self::StaticMemberExpression(it) => {
1414                Argument::StaticMemberExpression(CloneIn::clone_in(it, allocator))
1415            }
1416            Self::PrivateFieldExpression(it) => {
1417                Argument::PrivateFieldExpression(CloneIn::clone_in(it, allocator))
1418            }
1419        }
1420    }
1421
1422    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1423        match self {
1424            Self::SpreadElement(it) => {
1425                Argument::SpreadElement(CloneIn::clone_in_with_semantic_ids(it, allocator))
1426            }
1427            Self::BooleanLiteral(it) => {
1428                Argument::BooleanLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
1429            }
1430            Self::NullLiteral(it) => {
1431                Argument::NullLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
1432            }
1433            Self::NumericLiteral(it) => {
1434                Argument::NumericLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
1435            }
1436            Self::BigIntLiteral(it) => {
1437                Argument::BigIntLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
1438            }
1439            Self::RegExpLiteral(it) => {
1440                Argument::RegExpLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
1441            }
1442            Self::StringLiteral(it) => {
1443                Argument::StringLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
1444            }
1445            Self::TemplateLiteral(it) => {
1446                Argument::TemplateLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
1447            }
1448            Self::Identifier(it) => {
1449                Argument::Identifier(CloneIn::clone_in_with_semantic_ids(it, allocator))
1450            }
1451            Self::MetaProperty(it) => {
1452                Argument::MetaProperty(CloneIn::clone_in_with_semantic_ids(it, allocator))
1453            }
1454            Self::Super(it) => Argument::Super(CloneIn::clone_in_with_semantic_ids(it, allocator)),
1455            Self::ArrayExpression(it) => {
1456                Argument::ArrayExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1457            }
1458            Self::ArrowFunctionExpression(it) => Argument::ArrowFunctionExpression(
1459                CloneIn::clone_in_with_semantic_ids(it, allocator),
1460            ),
1461            Self::AssignmentExpression(it) => {
1462                Argument::AssignmentExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1463            }
1464            Self::AwaitExpression(it) => {
1465                Argument::AwaitExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1466            }
1467            Self::BinaryExpression(it) => {
1468                Argument::BinaryExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1469            }
1470            Self::CallExpression(it) => {
1471                Argument::CallExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1472            }
1473            Self::ChainExpression(it) => {
1474                Argument::ChainExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1475            }
1476            Self::ClassExpression(it) => {
1477                Argument::ClassExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1478            }
1479            Self::ConditionalExpression(it) => {
1480                Argument::ConditionalExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1481            }
1482            Self::FunctionExpression(it) => {
1483                Argument::FunctionExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1484            }
1485            Self::ImportExpression(it) => {
1486                Argument::ImportExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1487            }
1488            Self::LogicalExpression(it) => {
1489                Argument::LogicalExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1490            }
1491            Self::NewExpression(it) => {
1492                Argument::NewExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1493            }
1494            Self::ObjectExpression(it) => {
1495                Argument::ObjectExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1496            }
1497            Self::ParenthesizedExpression(it) => Argument::ParenthesizedExpression(
1498                CloneIn::clone_in_with_semantic_ids(it, allocator),
1499            ),
1500            Self::SequenceExpression(it) => {
1501                Argument::SequenceExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1502            }
1503            Self::TaggedTemplateExpression(it) => Argument::TaggedTemplateExpression(
1504                CloneIn::clone_in_with_semantic_ids(it, allocator),
1505            ),
1506            Self::ThisExpression(it) => {
1507                Argument::ThisExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1508            }
1509            Self::UnaryExpression(it) => {
1510                Argument::UnaryExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1511            }
1512            Self::UpdateExpression(it) => {
1513                Argument::UpdateExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1514            }
1515            Self::YieldExpression(it) => {
1516                Argument::YieldExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1517            }
1518            Self::PrivateInExpression(it) => {
1519                Argument::PrivateInExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1520            }
1521            Self::JSXElement(it) => {
1522                Argument::JSXElement(CloneIn::clone_in_with_semantic_ids(it, allocator))
1523            }
1524            Self::JSXFragment(it) => {
1525                Argument::JSXFragment(CloneIn::clone_in_with_semantic_ids(it, allocator))
1526            }
1527            Self::TSAsExpression(it) => {
1528                Argument::TSAsExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1529            }
1530            Self::TSSatisfiesExpression(it) => {
1531                Argument::TSSatisfiesExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1532            }
1533            Self::TSTypeAssertion(it) => {
1534                Argument::TSTypeAssertion(CloneIn::clone_in_with_semantic_ids(it, allocator))
1535            }
1536            Self::TSNonNullExpression(it) => {
1537                Argument::TSNonNullExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1538            }
1539            Self::TSInstantiationExpression(it) => Argument::TSInstantiationExpression(
1540                CloneIn::clone_in_with_semantic_ids(it, allocator),
1541            ),
1542            Self::V8IntrinsicExpression(it) => {
1543                Argument::V8IntrinsicExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1544            }
1545            Self::ComputedMemberExpression(it) => Argument::ComputedMemberExpression(
1546                CloneIn::clone_in_with_semantic_ids(it, allocator),
1547            ),
1548            Self::StaticMemberExpression(it) => {
1549                Argument::StaticMemberExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1550            }
1551            Self::PrivateFieldExpression(it) => {
1552                Argument::PrivateFieldExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1553            }
1554        }
1555    }
1556}
1557
1558impl<'new_alloc> CloneIn<'new_alloc> for UpdateExpression<'_> {
1559    type Cloned = UpdateExpression<'new_alloc>;
1560
1561    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1562        UpdateExpression {
1563            span: CloneIn::clone_in(&self.span, allocator),
1564            operator: CloneIn::clone_in(&self.operator, allocator),
1565            prefix: CloneIn::clone_in(&self.prefix, allocator),
1566            argument: CloneIn::clone_in(&self.argument, allocator),
1567        }
1568    }
1569
1570    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1571        UpdateExpression {
1572            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1573            operator: CloneIn::clone_in_with_semantic_ids(&self.operator, allocator),
1574            prefix: CloneIn::clone_in_with_semantic_ids(&self.prefix, allocator),
1575            argument: CloneIn::clone_in_with_semantic_ids(&self.argument, allocator),
1576        }
1577    }
1578}
1579
1580impl<'new_alloc> CloneIn<'new_alloc> for UnaryExpression<'_> {
1581    type Cloned = UnaryExpression<'new_alloc>;
1582
1583    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1584        UnaryExpression {
1585            span: CloneIn::clone_in(&self.span, allocator),
1586            operator: CloneIn::clone_in(&self.operator, allocator),
1587            argument: CloneIn::clone_in(&self.argument, allocator),
1588        }
1589    }
1590
1591    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1592        UnaryExpression {
1593            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1594            operator: CloneIn::clone_in_with_semantic_ids(&self.operator, allocator),
1595            argument: CloneIn::clone_in_with_semantic_ids(&self.argument, allocator),
1596        }
1597    }
1598}
1599
1600impl<'new_alloc> CloneIn<'new_alloc> for BinaryExpression<'_> {
1601    type Cloned = BinaryExpression<'new_alloc>;
1602
1603    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1604        BinaryExpression {
1605            span: CloneIn::clone_in(&self.span, allocator),
1606            left: CloneIn::clone_in(&self.left, allocator),
1607            operator: CloneIn::clone_in(&self.operator, allocator),
1608            right: CloneIn::clone_in(&self.right, allocator),
1609        }
1610    }
1611
1612    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1613        BinaryExpression {
1614            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1615            left: CloneIn::clone_in_with_semantic_ids(&self.left, allocator),
1616            operator: CloneIn::clone_in_with_semantic_ids(&self.operator, allocator),
1617            right: CloneIn::clone_in_with_semantic_ids(&self.right, allocator),
1618        }
1619    }
1620}
1621
1622impl<'new_alloc> CloneIn<'new_alloc> for PrivateInExpression<'_> {
1623    type Cloned = PrivateInExpression<'new_alloc>;
1624
1625    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1626        PrivateInExpression {
1627            span: CloneIn::clone_in(&self.span, allocator),
1628            left: CloneIn::clone_in(&self.left, allocator),
1629            right: CloneIn::clone_in(&self.right, allocator),
1630        }
1631    }
1632
1633    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1634        PrivateInExpression {
1635            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1636            left: CloneIn::clone_in_with_semantic_ids(&self.left, allocator),
1637            right: CloneIn::clone_in_with_semantic_ids(&self.right, allocator),
1638        }
1639    }
1640}
1641
1642impl<'new_alloc> CloneIn<'new_alloc> for LogicalExpression<'_> {
1643    type Cloned = LogicalExpression<'new_alloc>;
1644
1645    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1646        LogicalExpression {
1647            span: CloneIn::clone_in(&self.span, allocator),
1648            left: CloneIn::clone_in(&self.left, allocator),
1649            operator: CloneIn::clone_in(&self.operator, allocator),
1650            right: CloneIn::clone_in(&self.right, allocator),
1651        }
1652    }
1653
1654    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1655        LogicalExpression {
1656            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1657            left: CloneIn::clone_in_with_semantic_ids(&self.left, allocator),
1658            operator: CloneIn::clone_in_with_semantic_ids(&self.operator, allocator),
1659            right: CloneIn::clone_in_with_semantic_ids(&self.right, allocator),
1660        }
1661    }
1662}
1663
1664impl<'new_alloc> CloneIn<'new_alloc> for ConditionalExpression<'_> {
1665    type Cloned = ConditionalExpression<'new_alloc>;
1666
1667    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1668        ConditionalExpression {
1669            span: CloneIn::clone_in(&self.span, allocator),
1670            test: CloneIn::clone_in(&self.test, allocator),
1671            consequent: CloneIn::clone_in(&self.consequent, allocator),
1672            alternate: CloneIn::clone_in(&self.alternate, allocator),
1673        }
1674    }
1675
1676    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1677        ConditionalExpression {
1678            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1679            test: CloneIn::clone_in_with_semantic_ids(&self.test, allocator),
1680            consequent: CloneIn::clone_in_with_semantic_ids(&self.consequent, allocator),
1681            alternate: CloneIn::clone_in_with_semantic_ids(&self.alternate, allocator),
1682        }
1683    }
1684}
1685
1686impl<'new_alloc> CloneIn<'new_alloc> for AssignmentExpression<'_> {
1687    type Cloned = AssignmentExpression<'new_alloc>;
1688
1689    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1690        AssignmentExpression {
1691            span: CloneIn::clone_in(&self.span, allocator),
1692            operator: CloneIn::clone_in(&self.operator, allocator),
1693            left: CloneIn::clone_in(&self.left, allocator),
1694            right: CloneIn::clone_in(&self.right, allocator),
1695        }
1696    }
1697
1698    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1699        AssignmentExpression {
1700            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1701            operator: CloneIn::clone_in_with_semantic_ids(&self.operator, allocator),
1702            left: CloneIn::clone_in_with_semantic_ids(&self.left, allocator),
1703            right: CloneIn::clone_in_with_semantic_ids(&self.right, allocator),
1704        }
1705    }
1706}
1707
1708impl<'new_alloc> CloneIn<'new_alloc> for AssignmentTarget<'_> {
1709    type Cloned = AssignmentTarget<'new_alloc>;
1710
1711    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1712        match self {
1713            Self::AssignmentTargetIdentifier(it) => {
1714                AssignmentTarget::AssignmentTargetIdentifier(CloneIn::clone_in(it, allocator))
1715            }
1716            Self::TSAsExpression(it) => {
1717                AssignmentTarget::TSAsExpression(CloneIn::clone_in(it, allocator))
1718            }
1719            Self::TSSatisfiesExpression(it) => {
1720                AssignmentTarget::TSSatisfiesExpression(CloneIn::clone_in(it, allocator))
1721            }
1722            Self::TSNonNullExpression(it) => {
1723                AssignmentTarget::TSNonNullExpression(CloneIn::clone_in(it, allocator))
1724            }
1725            Self::TSTypeAssertion(it) => {
1726                AssignmentTarget::TSTypeAssertion(CloneIn::clone_in(it, allocator))
1727            }
1728            Self::ComputedMemberExpression(it) => {
1729                AssignmentTarget::ComputedMemberExpression(CloneIn::clone_in(it, allocator))
1730            }
1731            Self::StaticMemberExpression(it) => {
1732                AssignmentTarget::StaticMemberExpression(CloneIn::clone_in(it, allocator))
1733            }
1734            Self::PrivateFieldExpression(it) => {
1735                AssignmentTarget::PrivateFieldExpression(CloneIn::clone_in(it, allocator))
1736            }
1737            Self::ArrayAssignmentTarget(it) => {
1738                AssignmentTarget::ArrayAssignmentTarget(CloneIn::clone_in(it, allocator))
1739            }
1740            Self::ObjectAssignmentTarget(it) => {
1741                AssignmentTarget::ObjectAssignmentTarget(CloneIn::clone_in(it, allocator))
1742            }
1743        }
1744    }
1745
1746    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1747        match self {
1748            Self::AssignmentTargetIdentifier(it) => AssignmentTarget::AssignmentTargetIdentifier(
1749                CloneIn::clone_in_with_semantic_ids(it, allocator),
1750            ),
1751            Self::TSAsExpression(it) => {
1752                AssignmentTarget::TSAsExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
1753            }
1754            Self::TSSatisfiesExpression(it) => AssignmentTarget::TSSatisfiesExpression(
1755                CloneIn::clone_in_with_semantic_ids(it, allocator),
1756            ),
1757            Self::TSNonNullExpression(it) => AssignmentTarget::TSNonNullExpression(
1758                CloneIn::clone_in_with_semantic_ids(it, allocator),
1759            ),
1760            Self::TSTypeAssertion(it) => AssignmentTarget::TSTypeAssertion(
1761                CloneIn::clone_in_with_semantic_ids(it, allocator),
1762            ),
1763            Self::ComputedMemberExpression(it) => AssignmentTarget::ComputedMemberExpression(
1764                CloneIn::clone_in_with_semantic_ids(it, allocator),
1765            ),
1766            Self::StaticMemberExpression(it) => AssignmentTarget::StaticMemberExpression(
1767                CloneIn::clone_in_with_semantic_ids(it, allocator),
1768            ),
1769            Self::PrivateFieldExpression(it) => AssignmentTarget::PrivateFieldExpression(
1770                CloneIn::clone_in_with_semantic_ids(it, allocator),
1771            ),
1772            Self::ArrayAssignmentTarget(it) => AssignmentTarget::ArrayAssignmentTarget(
1773                CloneIn::clone_in_with_semantic_ids(it, allocator),
1774            ),
1775            Self::ObjectAssignmentTarget(it) => AssignmentTarget::ObjectAssignmentTarget(
1776                CloneIn::clone_in_with_semantic_ids(it, allocator),
1777            ),
1778        }
1779    }
1780}
1781
1782impl<'new_alloc> CloneIn<'new_alloc> for SimpleAssignmentTarget<'_> {
1783    type Cloned = SimpleAssignmentTarget<'new_alloc>;
1784
1785    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1786        match self {
1787            Self::AssignmentTargetIdentifier(it) => {
1788                SimpleAssignmentTarget::AssignmentTargetIdentifier(CloneIn::clone_in(it, allocator))
1789            }
1790            Self::TSAsExpression(it) => {
1791                SimpleAssignmentTarget::TSAsExpression(CloneIn::clone_in(it, allocator))
1792            }
1793            Self::TSSatisfiesExpression(it) => {
1794                SimpleAssignmentTarget::TSSatisfiesExpression(CloneIn::clone_in(it, allocator))
1795            }
1796            Self::TSNonNullExpression(it) => {
1797                SimpleAssignmentTarget::TSNonNullExpression(CloneIn::clone_in(it, allocator))
1798            }
1799            Self::TSTypeAssertion(it) => {
1800                SimpleAssignmentTarget::TSTypeAssertion(CloneIn::clone_in(it, allocator))
1801            }
1802            Self::ComputedMemberExpression(it) => {
1803                SimpleAssignmentTarget::ComputedMemberExpression(CloneIn::clone_in(it, allocator))
1804            }
1805            Self::StaticMemberExpression(it) => {
1806                SimpleAssignmentTarget::StaticMemberExpression(CloneIn::clone_in(it, allocator))
1807            }
1808            Self::PrivateFieldExpression(it) => {
1809                SimpleAssignmentTarget::PrivateFieldExpression(CloneIn::clone_in(it, allocator))
1810            }
1811        }
1812    }
1813
1814    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1815        match self {
1816            Self::AssignmentTargetIdentifier(it) => {
1817                SimpleAssignmentTarget::AssignmentTargetIdentifier(
1818                    CloneIn::clone_in_with_semantic_ids(it, allocator),
1819                )
1820            }
1821            Self::TSAsExpression(it) => SimpleAssignmentTarget::TSAsExpression(
1822                CloneIn::clone_in_with_semantic_ids(it, allocator),
1823            ),
1824            Self::TSSatisfiesExpression(it) => SimpleAssignmentTarget::TSSatisfiesExpression(
1825                CloneIn::clone_in_with_semantic_ids(it, allocator),
1826            ),
1827            Self::TSNonNullExpression(it) => SimpleAssignmentTarget::TSNonNullExpression(
1828                CloneIn::clone_in_with_semantic_ids(it, allocator),
1829            ),
1830            Self::TSTypeAssertion(it) => SimpleAssignmentTarget::TSTypeAssertion(
1831                CloneIn::clone_in_with_semantic_ids(it, allocator),
1832            ),
1833            Self::ComputedMemberExpression(it) => SimpleAssignmentTarget::ComputedMemberExpression(
1834                CloneIn::clone_in_with_semantic_ids(it, allocator),
1835            ),
1836            Self::StaticMemberExpression(it) => SimpleAssignmentTarget::StaticMemberExpression(
1837                CloneIn::clone_in_with_semantic_ids(it, allocator),
1838            ),
1839            Self::PrivateFieldExpression(it) => SimpleAssignmentTarget::PrivateFieldExpression(
1840                CloneIn::clone_in_with_semantic_ids(it, allocator),
1841            ),
1842        }
1843    }
1844}
1845
1846impl<'new_alloc> CloneIn<'new_alloc> for AssignmentTargetPattern<'_> {
1847    type Cloned = AssignmentTargetPattern<'new_alloc>;
1848
1849    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1850        match self {
1851            Self::ArrayAssignmentTarget(it) => {
1852                AssignmentTargetPattern::ArrayAssignmentTarget(CloneIn::clone_in(it, allocator))
1853            }
1854            Self::ObjectAssignmentTarget(it) => {
1855                AssignmentTargetPattern::ObjectAssignmentTarget(CloneIn::clone_in(it, allocator))
1856            }
1857        }
1858    }
1859
1860    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1861        match self {
1862            Self::ArrayAssignmentTarget(it) => AssignmentTargetPattern::ArrayAssignmentTarget(
1863                CloneIn::clone_in_with_semantic_ids(it, allocator),
1864            ),
1865            Self::ObjectAssignmentTarget(it) => AssignmentTargetPattern::ObjectAssignmentTarget(
1866                CloneIn::clone_in_with_semantic_ids(it, allocator),
1867            ),
1868        }
1869    }
1870}
1871
1872impl<'new_alloc> CloneIn<'new_alloc> for ArrayAssignmentTarget<'_> {
1873    type Cloned = ArrayAssignmentTarget<'new_alloc>;
1874
1875    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1876        ArrayAssignmentTarget {
1877            span: CloneIn::clone_in(&self.span, allocator),
1878            elements: CloneIn::clone_in(&self.elements, allocator),
1879            rest: CloneIn::clone_in(&self.rest, allocator),
1880        }
1881    }
1882
1883    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1884        ArrayAssignmentTarget {
1885            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1886            elements: CloneIn::clone_in_with_semantic_ids(&self.elements, allocator),
1887            rest: CloneIn::clone_in_with_semantic_ids(&self.rest, allocator),
1888        }
1889    }
1890}
1891
1892impl<'new_alloc> CloneIn<'new_alloc> for ObjectAssignmentTarget<'_> {
1893    type Cloned = ObjectAssignmentTarget<'new_alloc>;
1894
1895    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1896        ObjectAssignmentTarget {
1897            span: CloneIn::clone_in(&self.span, allocator),
1898            properties: CloneIn::clone_in(&self.properties, allocator),
1899            rest: CloneIn::clone_in(&self.rest, allocator),
1900        }
1901    }
1902
1903    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1904        ObjectAssignmentTarget {
1905            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1906            properties: CloneIn::clone_in_with_semantic_ids(&self.properties, allocator),
1907            rest: CloneIn::clone_in_with_semantic_ids(&self.rest, allocator),
1908        }
1909    }
1910}
1911
1912impl<'new_alloc> CloneIn<'new_alloc> for AssignmentTargetRest<'_> {
1913    type Cloned = AssignmentTargetRest<'new_alloc>;
1914
1915    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1916        AssignmentTargetRest {
1917            span: CloneIn::clone_in(&self.span, allocator),
1918            target: CloneIn::clone_in(&self.target, allocator),
1919        }
1920    }
1921
1922    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1923        AssignmentTargetRest {
1924            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
1925            target: CloneIn::clone_in_with_semantic_ids(&self.target, allocator),
1926        }
1927    }
1928}
1929
1930impl<'new_alloc> CloneIn<'new_alloc> for AssignmentTargetMaybeDefault<'_> {
1931    type Cloned = AssignmentTargetMaybeDefault<'new_alloc>;
1932
1933    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1934        match self {
1935            Self::AssignmentTargetWithDefault(it) => {
1936                AssignmentTargetMaybeDefault::AssignmentTargetWithDefault(CloneIn::clone_in(
1937                    it, allocator,
1938                ))
1939            }
1940            Self::AssignmentTargetIdentifier(it) => {
1941                AssignmentTargetMaybeDefault::AssignmentTargetIdentifier(CloneIn::clone_in(
1942                    it, allocator,
1943                ))
1944            }
1945            Self::TSAsExpression(it) => {
1946                AssignmentTargetMaybeDefault::TSAsExpression(CloneIn::clone_in(it, allocator))
1947            }
1948            Self::TSSatisfiesExpression(it) => AssignmentTargetMaybeDefault::TSSatisfiesExpression(
1949                CloneIn::clone_in(it, allocator),
1950            ),
1951            Self::TSNonNullExpression(it) => {
1952                AssignmentTargetMaybeDefault::TSNonNullExpression(CloneIn::clone_in(it, allocator))
1953            }
1954            Self::TSTypeAssertion(it) => {
1955                AssignmentTargetMaybeDefault::TSTypeAssertion(CloneIn::clone_in(it, allocator))
1956            }
1957            Self::ComputedMemberExpression(it) => {
1958                AssignmentTargetMaybeDefault::ComputedMemberExpression(CloneIn::clone_in(
1959                    it, allocator,
1960                ))
1961            }
1962            Self::StaticMemberExpression(it) => {
1963                AssignmentTargetMaybeDefault::StaticMemberExpression(CloneIn::clone_in(
1964                    it, allocator,
1965                ))
1966            }
1967            Self::PrivateFieldExpression(it) => {
1968                AssignmentTargetMaybeDefault::PrivateFieldExpression(CloneIn::clone_in(
1969                    it, allocator,
1970                ))
1971            }
1972            Self::ArrayAssignmentTarget(it) => AssignmentTargetMaybeDefault::ArrayAssignmentTarget(
1973                CloneIn::clone_in(it, allocator),
1974            ),
1975            Self::ObjectAssignmentTarget(it) => {
1976                AssignmentTargetMaybeDefault::ObjectAssignmentTarget(CloneIn::clone_in(
1977                    it, allocator,
1978                ))
1979            }
1980        }
1981    }
1982
1983    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
1984        match self {
1985            Self::AssignmentTargetWithDefault(it) => {
1986                AssignmentTargetMaybeDefault::AssignmentTargetWithDefault(
1987                    CloneIn::clone_in_with_semantic_ids(it, allocator),
1988                )
1989            }
1990            Self::AssignmentTargetIdentifier(it) => {
1991                AssignmentTargetMaybeDefault::AssignmentTargetIdentifier(
1992                    CloneIn::clone_in_with_semantic_ids(it, allocator),
1993                )
1994            }
1995            Self::TSAsExpression(it) => AssignmentTargetMaybeDefault::TSAsExpression(
1996                CloneIn::clone_in_with_semantic_ids(it, allocator),
1997            ),
1998            Self::TSSatisfiesExpression(it) => AssignmentTargetMaybeDefault::TSSatisfiesExpression(
1999                CloneIn::clone_in_with_semantic_ids(it, allocator),
2000            ),
2001            Self::TSNonNullExpression(it) => AssignmentTargetMaybeDefault::TSNonNullExpression(
2002                CloneIn::clone_in_with_semantic_ids(it, allocator),
2003            ),
2004            Self::TSTypeAssertion(it) => AssignmentTargetMaybeDefault::TSTypeAssertion(
2005                CloneIn::clone_in_with_semantic_ids(it, allocator),
2006            ),
2007            Self::ComputedMemberExpression(it) => {
2008                AssignmentTargetMaybeDefault::ComputedMemberExpression(
2009                    CloneIn::clone_in_with_semantic_ids(it, allocator),
2010                )
2011            }
2012            Self::StaticMemberExpression(it) => {
2013                AssignmentTargetMaybeDefault::StaticMemberExpression(
2014                    CloneIn::clone_in_with_semantic_ids(it, allocator),
2015                )
2016            }
2017            Self::PrivateFieldExpression(it) => {
2018                AssignmentTargetMaybeDefault::PrivateFieldExpression(
2019                    CloneIn::clone_in_with_semantic_ids(it, allocator),
2020                )
2021            }
2022            Self::ArrayAssignmentTarget(it) => AssignmentTargetMaybeDefault::ArrayAssignmentTarget(
2023                CloneIn::clone_in_with_semantic_ids(it, allocator),
2024            ),
2025            Self::ObjectAssignmentTarget(it) => {
2026                AssignmentTargetMaybeDefault::ObjectAssignmentTarget(
2027                    CloneIn::clone_in_with_semantic_ids(it, allocator),
2028                )
2029            }
2030        }
2031    }
2032}
2033
2034impl<'new_alloc> CloneIn<'new_alloc> for AssignmentTargetWithDefault<'_> {
2035    type Cloned = AssignmentTargetWithDefault<'new_alloc>;
2036
2037    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2038        AssignmentTargetWithDefault {
2039            span: CloneIn::clone_in(&self.span, allocator),
2040            binding: CloneIn::clone_in(&self.binding, allocator),
2041            init: CloneIn::clone_in(&self.init, allocator),
2042        }
2043    }
2044
2045    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2046        AssignmentTargetWithDefault {
2047            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2048            binding: CloneIn::clone_in_with_semantic_ids(&self.binding, allocator),
2049            init: CloneIn::clone_in_with_semantic_ids(&self.init, allocator),
2050        }
2051    }
2052}
2053
2054impl<'new_alloc> CloneIn<'new_alloc> for AssignmentTargetProperty<'_> {
2055    type Cloned = AssignmentTargetProperty<'new_alloc>;
2056
2057    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2058        match self {
2059            Self::AssignmentTargetPropertyIdentifier(it) => {
2060                AssignmentTargetProperty::AssignmentTargetPropertyIdentifier(CloneIn::clone_in(
2061                    it, allocator,
2062                ))
2063            }
2064            Self::AssignmentTargetPropertyProperty(it) => {
2065                AssignmentTargetProperty::AssignmentTargetPropertyProperty(CloneIn::clone_in(
2066                    it, allocator,
2067                ))
2068            }
2069        }
2070    }
2071
2072    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2073        match self {
2074            Self::AssignmentTargetPropertyIdentifier(it) => {
2075                AssignmentTargetProperty::AssignmentTargetPropertyIdentifier(
2076                    CloneIn::clone_in_with_semantic_ids(it, allocator),
2077                )
2078            }
2079            Self::AssignmentTargetPropertyProperty(it) => {
2080                AssignmentTargetProperty::AssignmentTargetPropertyProperty(
2081                    CloneIn::clone_in_with_semantic_ids(it, allocator),
2082                )
2083            }
2084        }
2085    }
2086}
2087
2088impl<'new_alloc> CloneIn<'new_alloc> for AssignmentTargetPropertyIdentifier<'_> {
2089    type Cloned = AssignmentTargetPropertyIdentifier<'new_alloc>;
2090
2091    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2092        AssignmentTargetPropertyIdentifier {
2093            span: CloneIn::clone_in(&self.span, allocator),
2094            binding: CloneIn::clone_in(&self.binding, allocator),
2095            init: CloneIn::clone_in(&self.init, allocator),
2096        }
2097    }
2098
2099    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2100        AssignmentTargetPropertyIdentifier {
2101            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2102            binding: CloneIn::clone_in_with_semantic_ids(&self.binding, allocator),
2103            init: CloneIn::clone_in_with_semantic_ids(&self.init, allocator),
2104        }
2105    }
2106}
2107
2108impl<'new_alloc> CloneIn<'new_alloc> for AssignmentTargetPropertyProperty<'_> {
2109    type Cloned = AssignmentTargetPropertyProperty<'new_alloc>;
2110
2111    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2112        AssignmentTargetPropertyProperty {
2113            span: CloneIn::clone_in(&self.span, allocator),
2114            name: CloneIn::clone_in(&self.name, allocator),
2115            binding: CloneIn::clone_in(&self.binding, allocator),
2116            computed: CloneIn::clone_in(&self.computed, allocator),
2117        }
2118    }
2119
2120    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2121        AssignmentTargetPropertyProperty {
2122            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2123            name: CloneIn::clone_in_with_semantic_ids(&self.name, allocator),
2124            binding: CloneIn::clone_in_with_semantic_ids(&self.binding, allocator),
2125            computed: CloneIn::clone_in_with_semantic_ids(&self.computed, allocator),
2126        }
2127    }
2128}
2129
2130impl<'new_alloc> CloneIn<'new_alloc> for SequenceExpression<'_> {
2131    type Cloned = SequenceExpression<'new_alloc>;
2132
2133    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2134        SequenceExpression {
2135            span: CloneIn::clone_in(&self.span, allocator),
2136            expressions: CloneIn::clone_in(&self.expressions, allocator),
2137        }
2138    }
2139
2140    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2141        SequenceExpression {
2142            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2143            expressions: CloneIn::clone_in_with_semantic_ids(&self.expressions, allocator),
2144        }
2145    }
2146}
2147
2148impl<'new_alloc> CloneIn<'new_alloc> for Super {
2149    type Cloned = Super;
2150
2151    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2152        Super { span: CloneIn::clone_in(&self.span, allocator) }
2153    }
2154
2155    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2156        Super { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
2157    }
2158}
2159
2160impl<'new_alloc> CloneIn<'new_alloc> for AwaitExpression<'_> {
2161    type Cloned = AwaitExpression<'new_alloc>;
2162
2163    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2164        AwaitExpression {
2165            span: CloneIn::clone_in(&self.span, allocator),
2166            argument: CloneIn::clone_in(&self.argument, allocator),
2167        }
2168    }
2169
2170    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2171        AwaitExpression {
2172            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2173            argument: CloneIn::clone_in_with_semantic_ids(&self.argument, allocator),
2174        }
2175    }
2176}
2177
2178impl<'new_alloc> CloneIn<'new_alloc> for ChainExpression<'_> {
2179    type Cloned = ChainExpression<'new_alloc>;
2180
2181    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2182        ChainExpression {
2183            span: CloneIn::clone_in(&self.span, allocator),
2184            expression: CloneIn::clone_in(&self.expression, allocator),
2185        }
2186    }
2187
2188    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2189        ChainExpression {
2190            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2191            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
2192        }
2193    }
2194}
2195
2196impl<'new_alloc> CloneIn<'new_alloc> for ChainElement<'_> {
2197    type Cloned = ChainElement<'new_alloc>;
2198
2199    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2200        match self {
2201            Self::CallExpression(it) => {
2202                ChainElement::CallExpression(CloneIn::clone_in(it, allocator))
2203            }
2204            Self::TSNonNullExpression(it) => {
2205                ChainElement::TSNonNullExpression(CloneIn::clone_in(it, allocator))
2206            }
2207            Self::ComputedMemberExpression(it) => {
2208                ChainElement::ComputedMemberExpression(CloneIn::clone_in(it, allocator))
2209            }
2210            Self::StaticMemberExpression(it) => {
2211                ChainElement::StaticMemberExpression(CloneIn::clone_in(it, allocator))
2212            }
2213            Self::PrivateFieldExpression(it) => {
2214                ChainElement::PrivateFieldExpression(CloneIn::clone_in(it, allocator))
2215            }
2216        }
2217    }
2218
2219    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2220        match self {
2221            Self::CallExpression(it) => {
2222                ChainElement::CallExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
2223            }
2224            Self::TSNonNullExpression(it) => ChainElement::TSNonNullExpression(
2225                CloneIn::clone_in_with_semantic_ids(it, allocator),
2226            ),
2227            Self::ComputedMemberExpression(it) => ChainElement::ComputedMemberExpression(
2228                CloneIn::clone_in_with_semantic_ids(it, allocator),
2229            ),
2230            Self::StaticMemberExpression(it) => ChainElement::StaticMemberExpression(
2231                CloneIn::clone_in_with_semantic_ids(it, allocator),
2232            ),
2233            Self::PrivateFieldExpression(it) => ChainElement::PrivateFieldExpression(
2234                CloneIn::clone_in_with_semantic_ids(it, allocator),
2235            ),
2236        }
2237    }
2238}
2239
2240impl<'new_alloc> CloneIn<'new_alloc> for ParenthesizedExpression<'_> {
2241    type Cloned = ParenthesizedExpression<'new_alloc>;
2242
2243    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2244        ParenthesizedExpression {
2245            span: CloneIn::clone_in(&self.span, allocator),
2246            expression: CloneIn::clone_in(&self.expression, allocator),
2247        }
2248    }
2249
2250    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2251        ParenthesizedExpression {
2252            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2253            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
2254        }
2255    }
2256}
2257
2258impl<'new_alloc> CloneIn<'new_alloc> for Statement<'_> {
2259    type Cloned = Statement<'new_alloc>;
2260
2261    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2262        match self {
2263            Self::BlockStatement(it) => Statement::BlockStatement(CloneIn::clone_in(it, allocator)),
2264            Self::BreakStatement(it) => Statement::BreakStatement(CloneIn::clone_in(it, allocator)),
2265            Self::ContinueStatement(it) => {
2266                Statement::ContinueStatement(CloneIn::clone_in(it, allocator))
2267            }
2268            Self::DebuggerStatement(it) => {
2269                Statement::DebuggerStatement(CloneIn::clone_in(it, allocator))
2270            }
2271            Self::DoWhileStatement(it) => {
2272                Statement::DoWhileStatement(CloneIn::clone_in(it, allocator))
2273            }
2274            Self::EmptyStatement(it) => Statement::EmptyStatement(CloneIn::clone_in(it, allocator)),
2275            Self::ExpressionStatement(it) => {
2276                Statement::ExpressionStatement(CloneIn::clone_in(it, allocator))
2277            }
2278            Self::ForInStatement(it) => Statement::ForInStatement(CloneIn::clone_in(it, allocator)),
2279            Self::ForOfStatement(it) => Statement::ForOfStatement(CloneIn::clone_in(it, allocator)),
2280            Self::ForStatement(it) => Statement::ForStatement(CloneIn::clone_in(it, allocator)),
2281            Self::IfStatement(it) => Statement::IfStatement(CloneIn::clone_in(it, allocator)),
2282            Self::LabeledStatement(it) => {
2283                Statement::LabeledStatement(CloneIn::clone_in(it, allocator))
2284            }
2285            Self::ReturnStatement(it) => {
2286                Statement::ReturnStatement(CloneIn::clone_in(it, allocator))
2287            }
2288            Self::SwitchStatement(it) => {
2289                Statement::SwitchStatement(CloneIn::clone_in(it, allocator))
2290            }
2291            Self::ThrowStatement(it) => Statement::ThrowStatement(CloneIn::clone_in(it, allocator)),
2292            Self::TryStatement(it) => Statement::TryStatement(CloneIn::clone_in(it, allocator)),
2293            Self::WhileStatement(it) => Statement::WhileStatement(CloneIn::clone_in(it, allocator)),
2294            Self::WithStatement(it) => Statement::WithStatement(CloneIn::clone_in(it, allocator)),
2295            Self::VariableDeclaration(it) => {
2296                Statement::VariableDeclaration(CloneIn::clone_in(it, allocator))
2297            }
2298            Self::FunctionDeclaration(it) => {
2299                Statement::FunctionDeclaration(CloneIn::clone_in(it, allocator))
2300            }
2301            Self::ClassDeclaration(it) => {
2302                Statement::ClassDeclaration(CloneIn::clone_in(it, allocator))
2303            }
2304            Self::TSTypeAliasDeclaration(it) => {
2305                Statement::TSTypeAliasDeclaration(CloneIn::clone_in(it, allocator))
2306            }
2307            Self::TSInterfaceDeclaration(it) => {
2308                Statement::TSInterfaceDeclaration(CloneIn::clone_in(it, allocator))
2309            }
2310            Self::TSEnumDeclaration(it) => {
2311                Statement::TSEnumDeclaration(CloneIn::clone_in(it, allocator))
2312            }
2313            Self::TSModuleDeclaration(it) => {
2314                Statement::TSModuleDeclaration(CloneIn::clone_in(it, allocator))
2315            }
2316            Self::TSImportEqualsDeclaration(it) => {
2317                Statement::TSImportEqualsDeclaration(CloneIn::clone_in(it, allocator))
2318            }
2319            Self::ImportDeclaration(it) => {
2320                Statement::ImportDeclaration(CloneIn::clone_in(it, allocator))
2321            }
2322            Self::ExportAllDeclaration(it) => {
2323                Statement::ExportAllDeclaration(CloneIn::clone_in(it, allocator))
2324            }
2325            Self::ExportDefaultDeclaration(it) => {
2326                Statement::ExportDefaultDeclaration(CloneIn::clone_in(it, allocator))
2327            }
2328            Self::ExportNamedDeclaration(it) => {
2329                Statement::ExportNamedDeclaration(CloneIn::clone_in(it, allocator))
2330            }
2331            Self::TSExportAssignment(it) => {
2332                Statement::TSExportAssignment(CloneIn::clone_in(it, allocator))
2333            }
2334            Self::TSNamespaceExportDeclaration(it) => {
2335                Statement::TSNamespaceExportDeclaration(CloneIn::clone_in(it, allocator))
2336            }
2337        }
2338    }
2339
2340    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2341        match self {
2342            Self::BlockStatement(it) => {
2343                Statement::BlockStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2344            }
2345            Self::BreakStatement(it) => {
2346                Statement::BreakStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2347            }
2348            Self::ContinueStatement(it) => {
2349                Statement::ContinueStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2350            }
2351            Self::DebuggerStatement(it) => {
2352                Statement::DebuggerStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2353            }
2354            Self::DoWhileStatement(it) => {
2355                Statement::DoWhileStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2356            }
2357            Self::EmptyStatement(it) => {
2358                Statement::EmptyStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2359            }
2360            Self::ExpressionStatement(it) => {
2361                Statement::ExpressionStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2362            }
2363            Self::ForInStatement(it) => {
2364                Statement::ForInStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2365            }
2366            Self::ForOfStatement(it) => {
2367                Statement::ForOfStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2368            }
2369            Self::ForStatement(it) => {
2370                Statement::ForStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2371            }
2372            Self::IfStatement(it) => {
2373                Statement::IfStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2374            }
2375            Self::LabeledStatement(it) => {
2376                Statement::LabeledStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2377            }
2378            Self::ReturnStatement(it) => {
2379                Statement::ReturnStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2380            }
2381            Self::SwitchStatement(it) => {
2382                Statement::SwitchStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2383            }
2384            Self::ThrowStatement(it) => {
2385                Statement::ThrowStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2386            }
2387            Self::TryStatement(it) => {
2388                Statement::TryStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2389            }
2390            Self::WhileStatement(it) => {
2391                Statement::WhileStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2392            }
2393            Self::WithStatement(it) => {
2394                Statement::WithStatement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2395            }
2396            Self::VariableDeclaration(it) => {
2397                Statement::VariableDeclaration(CloneIn::clone_in_with_semantic_ids(it, allocator))
2398            }
2399            Self::FunctionDeclaration(it) => {
2400                Statement::FunctionDeclaration(CloneIn::clone_in_with_semantic_ids(it, allocator))
2401            }
2402            Self::ClassDeclaration(it) => {
2403                Statement::ClassDeclaration(CloneIn::clone_in_with_semantic_ids(it, allocator))
2404            }
2405            Self::TSTypeAliasDeclaration(it) => Statement::TSTypeAliasDeclaration(
2406                CloneIn::clone_in_with_semantic_ids(it, allocator),
2407            ),
2408            Self::TSInterfaceDeclaration(it) => Statement::TSInterfaceDeclaration(
2409                CloneIn::clone_in_with_semantic_ids(it, allocator),
2410            ),
2411            Self::TSEnumDeclaration(it) => {
2412                Statement::TSEnumDeclaration(CloneIn::clone_in_with_semantic_ids(it, allocator))
2413            }
2414            Self::TSModuleDeclaration(it) => {
2415                Statement::TSModuleDeclaration(CloneIn::clone_in_with_semantic_ids(it, allocator))
2416            }
2417            Self::TSImportEqualsDeclaration(it) => Statement::TSImportEqualsDeclaration(
2418                CloneIn::clone_in_with_semantic_ids(it, allocator),
2419            ),
2420            Self::ImportDeclaration(it) => {
2421                Statement::ImportDeclaration(CloneIn::clone_in_with_semantic_ids(it, allocator))
2422            }
2423            Self::ExportAllDeclaration(it) => {
2424                Statement::ExportAllDeclaration(CloneIn::clone_in_with_semantic_ids(it, allocator))
2425            }
2426            Self::ExportDefaultDeclaration(it) => Statement::ExportDefaultDeclaration(
2427                CloneIn::clone_in_with_semantic_ids(it, allocator),
2428            ),
2429            Self::ExportNamedDeclaration(it) => Statement::ExportNamedDeclaration(
2430                CloneIn::clone_in_with_semantic_ids(it, allocator),
2431            ),
2432            Self::TSExportAssignment(it) => {
2433                Statement::TSExportAssignment(CloneIn::clone_in_with_semantic_ids(it, allocator))
2434            }
2435            Self::TSNamespaceExportDeclaration(it) => Statement::TSNamespaceExportDeclaration(
2436                CloneIn::clone_in_with_semantic_ids(it, allocator),
2437            ),
2438        }
2439    }
2440}
2441
2442impl<'new_alloc> CloneIn<'new_alloc> for Directive<'_> {
2443    type Cloned = Directive<'new_alloc>;
2444
2445    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2446        Directive {
2447            span: CloneIn::clone_in(&self.span, allocator),
2448            expression: CloneIn::clone_in(&self.expression, allocator),
2449            directive: CloneIn::clone_in(&self.directive, allocator),
2450        }
2451    }
2452
2453    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2454        Directive {
2455            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2456            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
2457            directive: CloneIn::clone_in_with_semantic_ids(&self.directive, allocator),
2458        }
2459    }
2460}
2461
2462impl<'new_alloc> CloneIn<'new_alloc> for Hashbang<'_> {
2463    type Cloned = Hashbang<'new_alloc>;
2464
2465    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2466        Hashbang {
2467            span: CloneIn::clone_in(&self.span, allocator),
2468            value: CloneIn::clone_in(&self.value, allocator),
2469        }
2470    }
2471
2472    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2473        Hashbang {
2474            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2475            value: CloneIn::clone_in_with_semantic_ids(&self.value, allocator),
2476        }
2477    }
2478}
2479
2480impl<'new_alloc> CloneIn<'new_alloc> for BlockStatement<'_> {
2481    type Cloned = BlockStatement<'new_alloc>;
2482
2483    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2484        BlockStatement {
2485            span: CloneIn::clone_in(&self.span, allocator),
2486            body: CloneIn::clone_in(&self.body, allocator),
2487            scope_id: Default::default(),
2488        }
2489    }
2490
2491    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2492        BlockStatement {
2493            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2494            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
2495            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
2496        }
2497    }
2498}
2499
2500impl<'new_alloc> CloneIn<'new_alloc> for Declaration<'_> {
2501    type Cloned = Declaration<'new_alloc>;
2502
2503    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2504        match self {
2505            Self::VariableDeclaration(it) => {
2506                Declaration::VariableDeclaration(CloneIn::clone_in(it, allocator))
2507            }
2508            Self::FunctionDeclaration(it) => {
2509                Declaration::FunctionDeclaration(CloneIn::clone_in(it, allocator))
2510            }
2511            Self::ClassDeclaration(it) => {
2512                Declaration::ClassDeclaration(CloneIn::clone_in(it, allocator))
2513            }
2514            Self::TSTypeAliasDeclaration(it) => {
2515                Declaration::TSTypeAliasDeclaration(CloneIn::clone_in(it, allocator))
2516            }
2517            Self::TSInterfaceDeclaration(it) => {
2518                Declaration::TSInterfaceDeclaration(CloneIn::clone_in(it, allocator))
2519            }
2520            Self::TSEnumDeclaration(it) => {
2521                Declaration::TSEnumDeclaration(CloneIn::clone_in(it, allocator))
2522            }
2523            Self::TSModuleDeclaration(it) => {
2524                Declaration::TSModuleDeclaration(CloneIn::clone_in(it, allocator))
2525            }
2526            Self::TSImportEqualsDeclaration(it) => {
2527                Declaration::TSImportEqualsDeclaration(CloneIn::clone_in(it, allocator))
2528            }
2529        }
2530    }
2531
2532    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2533        match self {
2534            Self::VariableDeclaration(it) => {
2535                Declaration::VariableDeclaration(CloneIn::clone_in_with_semantic_ids(it, allocator))
2536            }
2537            Self::FunctionDeclaration(it) => {
2538                Declaration::FunctionDeclaration(CloneIn::clone_in_with_semantic_ids(it, allocator))
2539            }
2540            Self::ClassDeclaration(it) => {
2541                Declaration::ClassDeclaration(CloneIn::clone_in_with_semantic_ids(it, allocator))
2542            }
2543            Self::TSTypeAliasDeclaration(it) => Declaration::TSTypeAliasDeclaration(
2544                CloneIn::clone_in_with_semantic_ids(it, allocator),
2545            ),
2546            Self::TSInterfaceDeclaration(it) => Declaration::TSInterfaceDeclaration(
2547                CloneIn::clone_in_with_semantic_ids(it, allocator),
2548            ),
2549            Self::TSEnumDeclaration(it) => {
2550                Declaration::TSEnumDeclaration(CloneIn::clone_in_with_semantic_ids(it, allocator))
2551            }
2552            Self::TSModuleDeclaration(it) => {
2553                Declaration::TSModuleDeclaration(CloneIn::clone_in_with_semantic_ids(it, allocator))
2554            }
2555            Self::TSImportEqualsDeclaration(it) => Declaration::TSImportEqualsDeclaration(
2556                CloneIn::clone_in_with_semantic_ids(it, allocator),
2557            ),
2558        }
2559    }
2560}
2561
2562impl<'new_alloc> CloneIn<'new_alloc> for VariableDeclaration<'_> {
2563    type Cloned = VariableDeclaration<'new_alloc>;
2564
2565    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2566        VariableDeclaration {
2567            span: CloneIn::clone_in(&self.span, allocator),
2568            kind: CloneIn::clone_in(&self.kind, allocator),
2569            declarations: CloneIn::clone_in(&self.declarations, allocator),
2570            declare: CloneIn::clone_in(&self.declare, allocator),
2571        }
2572    }
2573
2574    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2575        VariableDeclaration {
2576            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2577            kind: CloneIn::clone_in_with_semantic_ids(&self.kind, allocator),
2578            declarations: CloneIn::clone_in_with_semantic_ids(&self.declarations, allocator),
2579            declare: CloneIn::clone_in_with_semantic_ids(&self.declare, allocator),
2580        }
2581    }
2582}
2583
2584impl<'new_alloc> CloneIn<'new_alloc> for VariableDeclarationKind {
2585    type Cloned = VariableDeclarationKind;
2586
2587    #[inline(always)]
2588    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2589        *self
2590    }
2591
2592    #[inline(always)]
2593    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2594        *self
2595    }
2596}
2597
2598impl<'new_alloc> CloneIn<'new_alloc> for VariableDeclarator<'_> {
2599    type Cloned = VariableDeclarator<'new_alloc>;
2600
2601    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2602        VariableDeclarator {
2603            span: CloneIn::clone_in(&self.span, allocator),
2604            kind: CloneIn::clone_in(&self.kind, allocator),
2605            id: CloneIn::clone_in(&self.id, allocator),
2606            init: CloneIn::clone_in(&self.init, allocator),
2607            definite: CloneIn::clone_in(&self.definite, allocator),
2608        }
2609    }
2610
2611    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2612        VariableDeclarator {
2613            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2614            kind: CloneIn::clone_in_with_semantic_ids(&self.kind, allocator),
2615            id: CloneIn::clone_in_with_semantic_ids(&self.id, allocator),
2616            init: CloneIn::clone_in_with_semantic_ids(&self.init, allocator),
2617            definite: CloneIn::clone_in_with_semantic_ids(&self.definite, allocator),
2618        }
2619    }
2620}
2621
2622impl<'new_alloc> CloneIn<'new_alloc> for EmptyStatement {
2623    type Cloned = EmptyStatement;
2624
2625    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2626        EmptyStatement { span: CloneIn::clone_in(&self.span, allocator) }
2627    }
2628
2629    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2630        EmptyStatement { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
2631    }
2632}
2633
2634impl<'new_alloc> CloneIn<'new_alloc> for ExpressionStatement<'_> {
2635    type Cloned = ExpressionStatement<'new_alloc>;
2636
2637    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2638        ExpressionStatement {
2639            span: CloneIn::clone_in(&self.span, allocator),
2640            expression: CloneIn::clone_in(&self.expression, allocator),
2641        }
2642    }
2643
2644    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2645        ExpressionStatement {
2646            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2647            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
2648        }
2649    }
2650}
2651
2652impl<'new_alloc> CloneIn<'new_alloc> for IfStatement<'_> {
2653    type Cloned = IfStatement<'new_alloc>;
2654
2655    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2656        IfStatement {
2657            span: CloneIn::clone_in(&self.span, allocator),
2658            test: CloneIn::clone_in(&self.test, allocator),
2659            consequent: CloneIn::clone_in(&self.consequent, allocator),
2660            alternate: CloneIn::clone_in(&self.alternate, allocator),
2661        }
2662    }
2663
2664    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2665        IfStatement {
2666            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2667            test: CloneIn::clone_in_with_semantic_ids(&self.test, allocator),
2668            consequent: CloneIn::clone_in_with_semantic_ids(&self.consequent, allocator),
2669            alternate: CloneIn::clone_in_with_semantic_ids(&self.alternate, allocator),
2670        }
2671    }
2672}
2673
2674impl<'new_alloc> CloneIn<'new_alloc> for DoWhileStatement<'_> {
2675    type Cloned = DoWhileStatement<'new_alloc>;
2676
2677    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2678        DoWhileStatement {
2679            span: CloneIn::clone_in(&self.span, allocator),
2680            body: CloneIn::clone_in(&self.body, allocator),
2681            test: CloneIn::clone_in(&self.test, allocator),
2682        }
2683    }
2684
2685    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2686        DoWhileStatement {
2687            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2688            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
2689            test: CloneIn::clone_in_with_semantic_ids(&self.test, allocator),
2690        }
2691    }
2692}
2693
2694impl<'new_alloc> CloneIn<'new_alloc> for WhileStatement<'_> {
2695    type Cloned = WhileStatement<'new_alloc>;
2696
2697    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2698        WhileStatement {
2699            span: CloneIn::clone_in(&self.span, allocator),
2700            test: CloneIn::clone_in(&self.test, allocator),
2701            body: CloneIn::clone_in(&self.body, allocator),
2702        }
2703    }
2704
2705    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2706        WhileStatement {
2707            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2708            test: CloneIn::clone_in_with_semantic_ids(&self.test, allocator),
2709            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
2710        }
2711    }
2712}
2713
2714impl<'new_alloc> CloneIn<'new_alloc> for ForStatement<'_> {
2715    type Cloned = ForStatement<'new_alloc>;
2716
2717    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2718        ForStatement {
2719            span: CloneIn::clone_in(&self.span, allocator),
2720            init: CloneIn::clone_in(&self.init, allocator),
2721            test: CloneIn::clone_in(&self.test, allocator),
2722            update: CloneIn::clone_in(&self.update, allocator),
2723            body: CloneIn::clone_in(&self.body, allocator),
2724            scope_id: Default::default(),
2725        }
2726    }
2727
2728    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2729        ForStatement {
2730            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
2731            init: CloneIn::clone_in_with_semantic_ids(&self.init, allocator),
2732            test: CloneIn::clone_in_with_semantic_ids(&self.test, allocator),
2733            update: CloneIn::clone_in_with_semantic_ids(&self.update, allocator),
2734            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
2735            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
2736        }
2737    }
2738}
2739
2740impl<'new_alloc> CloneIn<'new_alloc> for ForStatementInit<'_> {
2741    type Cloned = ForStatementInit<'new_alloc>;
2742
2743    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2744        match self {
2745            Self::VariableDeclaration(it) => {
2746                ForStatementInit::VariableDeclaration(CloneIn::clone_in(it, allocator))
2747            }
2748            Self::BooleanLiteral(it) => {
2749                ForStatementInit::BooleanLiteral(CloneIn::clone_in(it, allocator))
2750            }
2751            Self::NullLiteral(it) => {
2752                ForStatementInit::NullLiteral(CloneIn::clone_in(it, allocator))
2753            }
2754            Self::NumericLiteral(it) => {
2755                ForStatementInit::NumericLiteral(CloneIn::clone_in(it, allocator))
2756            }
2757            Self::BigIntLiteral(it) => {
2758                ForStatementInit::BigIntLiteral(CloneIn::clone_in(it, allocator))
2759            }
2760            Self::RegExpLiteral(it) => {
2761                ForStatementInit::RegExpLiteral(CloneIn::clone_in(it, allocator))
2762            }
2763            Self::StringLiteral(it) => {
2764                ForStatementInit::StringLiteral(CloneIn::clone_in(it, allocator))
2765            }
2766            Self::TemplateLiteral(it) => {
2767                ForStatementInit::TemplateLiteral(CloneIn::clone_in(it, allocator))
2768            }
2769            Self::Identifier(it) => ForStatementInit::Identifier(CloneIn::clone_in(it, allocator)),
2770            Self::MetaProperty(it) => {
2771                ForStatementInit::MetaProperty(CloneIn::clone_in(it, allocator))
2772            }
2773            Self::Super(it) => ForStatementInit::Super(CloneIn::clone_in(it, allocator)),
2774            Self::ArrayExpression(it) => {
2775                ForStatementInit::ArrayExpression(CloneIn::clone_in(it, allocator))
2776            }
2777            Self::ArrowFunctionExpression(it) => {
2778                ForStatementInit::ArrowFunctionExpression(CloneIn::clone_in(it, allocator))
2779            }
2780            Self::AssignmentExpression(it) => {
2781                ForStatementInit::AssignmentExpression(CloneIn::clone_in(it, allocator))
2782            }
2783            Self::AwaitExpression(it) => {
2784                ForStatementInit::AwaitExpression(CloneIn::clone_in(it, allocator))
2785            }
2786            Self::BinaryExpression(it) => {
2787                ForStatementInit::BinaryExpression(CloneIn::clone_in(it, allocator))
2788            }
2789            Self::CallExpression(it) => {
2790                ForStatementInit::CallExpression(CloneIn::clone_in(it, allocator))
2791            }
2792            Self::ChainExpression(it) => {
2793                ForStatementInit::ChainExpression(CloneIn::clone_in(it, allocator))
2794            }
2795            Self::ClassExpression(it) => {
2796                ForStatementInit::ClassExpression(CloneIn::clone_in(it, allocator))
2797            }
2798            Self::ConditionalExpression(it) => {
2799                ForStatementInit::ConditionalExpression(CloneIn::clone_in(it, allocator))
2800            }
2801            Self::FunctionExpression(it) => {
2802                ForStatementInit::FunctionExpression(CloneIn::clone_in(it, allocator))
2803            }
2804            Self::ImportExpression(it) => {
2805                ForStatementInit::ImportExpression(CloneIn::clone_in(it, allocator))
2806            }
2807            Self::LogicalExpression(it) => {
2808                ForStatementInit::LogicalExpression(CloneIn::clone_in(it, allocator))
2809            }
2810            Self::NewExpression(it) => {
2811                ForStatementInit::NewExpression(CloneIn::clone_in(it, allocator))
2812            }
2813            Self::ObjectExpression(it) => {
2814                ForStatementInit::ObjectExpression(CloneIn::clone_in(it, allocator))
2815            }
2816            Self::ParenthesizedExpression(it) => {
2817                ForStatementInit::ParenthesizedExpression(CloneIn::clone_in(it, allocator))
2818            }
2819            Self::SequenceExpression(it) => {
2820                ForStatementInit::SequenceExpression(CloneIn::clone_in(it, allocator))
2821            }
2822            Self::TaggedTemplateExpression(it) => {
2823                ForStatementInit::TaggedTemplateExpression(CloneIn::clone_in(it, allocator))
2824            }
2825            Self::ThisExpression(it) => {
2826                ForStatementInit::ThisExpression(CloneIn::clone_in(it, allocator))
2827            }
2828            Self::UnaryExpression(it) => {
2829                ForStatementInit::UnaryExpression(CloneIn::clone_in(it, allocator))
2830            }
2831            Self::UpdateExpression(it) => {
2832                ForStatementInit::UpdateExpression(CloneIn::clone_in(it, allocator))
2833            }
2834            Self::YieldExpression(it) => {
2835                ForStatementInit::YieldExpression(CloneIn::clone_in(it, allocator))
2836            }
2837            Self::PrivateInExpression(it) => {
2838                ForStatementInit::PrivateInExpression(CloneIn::clone_in(it, allocator))
2839            }
2840            Self::JSXElement(it) => ForStatementInit::JSXElement(CloneIn::clone_in(it, allocator)),
2841            Self::JSXFragment(it) => {
2842                ForStatementInit::JSXFragment(CloneIn::clone_in(it, allocator))
2843            }
2844            Self::TSAsExpression(it) => {
2845                ForStatementInit::TSAsExpression(CloneIn::clone_in(it, allocator))
2846            }
2847            Self::TSSatisfiesExpression(it) => {
2848                ForStatementInit::TSSatisfiesExpression(CloneIn::clone_in(it, allocator))
2849            }
2850            Self::TSTypeAssertion(it) => {
2851                ForStatementInit::TSTypeAssertion(CloneIn::clone_in(it, allocator))
2852            }
2853            Self::TSNonNullExpression(it) => {
2854                ForStatementInit::TSNonNullExpression(CloneIn::clone_in(it, allocator))
2855            }
2856            Self::TSInstantiationExpression(it) => {
2857                ForStatementInit::TSInstantiationExpression(CloneIn::clone_in(it, allocator))
2858            }
2859            Self::V8IntrinsicExpression(it) => {
2860                ForStatementInit::V8IntrinsicExpression(CloneIn::clone_in(it, allocator))
2861            }
2862            Self::ComputedMemberExpression(it) => {
2863                ForStatementInit::ComputedMemberExpression(CloneIn::clone_in(it, allocator))
2864            }
2865            Self::StaticMemberExpression(it) => {
2866                ForStatementInit::StaticMemberExpression(CloneIn::clone_in(it, allocator))
2867            }
2868            Self::PrivateFieldExpression(it) => {
2869                ForStatementInit::PrivateFieldExpression(CloneIn::clone_in(it, allocator))
2870            }
2871        }
2872    }
2873
2874    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
2875        match self {
2876            Self::VariableDeclaration(it) => ForStatementInit::VariableDeclaration(
2877                CloneIn::clone_in_with_semantic_ids(it, allocator),
2878            ),
2879            Self::BooleanLiteral(it) => {
2880                ForStatementInit::BooleanLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
2881            }
2882            Self::NullLiteral(it) => {
2883                ForStatementInit::NullLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
2884            }
2885            Self::NumericLiteral(it) => {
2886                ForStatementInit::NumericLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
2887            }
2888            Self::BigIntLiteral(it) => {
2889                ForStatementInit::BigIntLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
2890            }
2891            Self::RegExpLiteral(it) => {
2892                ForStatementInit::RegExpLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
2893            }
2894            Self::StringLiteral(it) => {
2895                ForStatementInit::StringLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
2896            }
2897            Self::TemplateLiteral(it) => ForStatementInit::TemplateLiteral(
2898                CloneIn::clone_in_with_semantic_ids(it, allocator),
2899            ),
2900            Self::Identifier(it) => {
2901                ForStatementInit::Identifier(CloneIn::clone_in_with_semantic_ids(it, allocator))
2902            }
2903            Self::MetaProperty(it) => {
2904                ForStatementInit::MetaProperty(CloneIn::clone_in_with_semantic_ids(it, allocator))
2905            }
2906            Self::Super(it) => {
2907                ForStatementInit::Super(CloneIn::clone_in_with_semantic_ids(it, allocator))
2908            }
2909            Self::ArrayExpression(it) => ForStatementInit::ArrayExpression(
2910                CloneIn::clone_in_with_semantic_ids(it, allocator),
2911            ),
2912            Self::ArrowFunctionExpression(it) => ForStatementInit::ArrowFunctionExpression(
2913                CloneIn::clone_in_with_semantic_ids(it, allocator),
2914            ),
2915            Self::AssignmentExpression(it) => ForStatementInit::AssignmentExpression(
2916                CloneIn::clone_in_with_semantic_ids(it, allocator),
2917            ),
2918            Self::AwaitExpression(it) => ForStatementInit::AwaitExpression(
2919                CloneIn::clone_in_with_semantic_ids(it, allocator),
2920            ),
2921            Self::BinaryExpression(it) => ForStatementInit::BinaryExpression(
2922                CloneIn::clone_in_with_semantic_ids(it, allocator),
2923            ),
2924            Self::CallExpression(it) => {
2925                ForStatementInit::CallExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
2926            }
2927            Self::ChainExpression(it) => ForStatementInit::ChainExpression(
2928                CloneIn::clone_in_with_semantic_ids(it, allocator),
2929            ),
2930            Self::ClassExpression(it) => ForStatementInit::ClassExpression(
2931                CloneIn::clone_in_with_semantic_ids(it, allocator),
2932            ),
2933            Self::ConditionalExpression(it) => ForStatementInit::ConditionalExpression(
2934                CloneIn::clone_in_with_semantic_ids(it, allocator),
2935            ),
2936            Self::FunctionExpression(it) => ForStatementInit::FunctionExpression(
2937                CloneIn::clone_in_with_semantic_ids(it, allocator),
2938            ),
2939            Self::ImportExpression(it) => ForStatementInit::ImportExpression(
2940                CloneIn::clone_in_with_semantic_ids(it, allocator),
2941            ),
2942            Self::LogicalExpression(it) => ForStatementInit::LogicalExpression(
2943                CloneIn::clone_in_with_semantic_ids(it, allocator),
2944            ),
2945            Self::NewExpression(it) => {
2946                ForStatementInit::NewExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
2947            }
2948            Self::ObjectExpression(it) => ForStatementInit::ObjectExpression(
2949                CloneIn::clone_in_with_semantic_ids(it, allocator),
2950            ),
2951            Self::ParenthesizedExpression(it) => ForStatementInit::ParenthesizedExpression(
2952                CloneIn::clone_in_with_semantic_ids(it, allocator),
2953            ),
2954            Self::SequenceExpression(it) => ForStatementInit::SequenceExpression(
2955                CloneIn::clone_in_with_semantic_ids(it, allocator),
2956            ),
2957            Self::TaggedTemplateExpression(it) => ForStatementInit::TaggedTemplateExpression(
2958                CloneIn::clone_in_with_semantic_ids(it, allocator),
2959            ),
2960            Self::ThisExpression(it) => {
2961                ForStatementInit::ThisExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
2962            }
2963            Self::UnaryExpression(it) => ForStatementInit::UnaryExpression(
2964                CloneIn::clone_in_with_semantic_ids(it, allocator),
2965            ),
2966            Self::UpdateExpression(it) => ForStatementInit::UpdateExpression(
2967                CloneIn::clone_in_with_semantic_ids(it, allocator),
2968            ),
2969            Self::YieldExpression(it) => ForStatementInit::YieldExpression(
2970                CloneIn::clone_in_with_semantic_ids(it, allocator),
2971            ),
2972            Self::PrivateInExpression(it) => ForStatementInit::PrivateInExpression(
2973                CloneIn::clone_in_with_semantic_ids(it, allocator),
2974            ),
2975            Self::JSXElement(it) => {
2976                ForStatementInit::JSXElement(CloneIn::clone_in_with_semantic_ids(it, allocator))
2977            }
2978            Self::JSXFragment(it) => {
2979                ForStatementInit::JSXFragment(CloneIn::clone_in_with_semantic_ids(it, allocator))
2980            }
2981            Self::TSAsExpression(it) => {
2982                ForStatementInit::TSAsExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
2983            }
2984            Self::TSSatisfiesExpression(it) => ForStatementInit::TSSatisfiesExpression(
2985                CloneIn::clone_in_with_semantic_ids(it, allocator),
2986            ),
2987            Self::TSTypeAssertion(it) => ForStatementInit::TSTypeAssertion(
2988                CloneIn::clone_in_with_semantic_ids(it, allocator),
2989            ),
2990            Self::TSNonNullExpression(it) => ForStatementInit::TSNonNullExpression(
2991                CloneIn::clone_in_with_semantic_ids(it, allocator),
2992            ),
2993            Self::TSInstantiationExpression(it) => ForStatementInit::TSInstantiationExpression(
2994                CloneIn::clone_in_with_semantic_ids(it, allocator),
2995            ),
2996            Self::V8IntrinsicExpression(it) => ForStatementInit::V8IntrinsicExpression(
2997                CloneIn::clone_in_with_semantic_ids(it, allocator),
2998            ),
2999            Self::ComputedMemberExpression(it) => ForStatementInit::ComputedMemberExpression(
3000                CloneIn::clone_in_with_semantic_ids(it, allocator),
3001            ),
3002            Self::StaticMemberExpression(it) => ForStatementInit::StaticMemberExpression(
3003                CloneIn::clone_in_with_semantic_ids(it, allocator),
3004            ),
3005            Self::PrivateFieldExpression(it) => ForStatementInit::PrivateFieldExpression(
3006                CloneIn::clone_in_with_semantic_ids(it, allocator),
3007            ),
3008        }
3009    }
3010}
3011
3012impl<'new_alloc> CloneIn<'new_alloc> for ForInStatement<'_> {
3013    type Cloned = ForInStatement<'new_alloc>;
3014
3015    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3016        ForInStatement {
3017            span: CloneIn::clone_in(&self.span, allocator),
3018            left: CloneIn::clone_in(&self.left, allocator),
3019            right: CloneIn::clone_in(&self.right, allocator),
3020            body: CloneIn::clone_in(&self.body, allocator),
3021            scope_id: Default::default(),
3022        }
3023    }
3024
3025    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3026        ForInStatement {
3027            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3028            left: CloneIn::clone_in_with_semantic_ids(&self.left, allocator),
3029            right: CloneIn::clone_in_with_semantic_ids(&self.right, allocator),
3030            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
3031            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
3032        }
3033    }
3034}
3035
3036impl<'new_alloc> CloneIn<'new_alloc> for ForStatementLeft<'_> {
3037    type Cloned = ForStatementLeft<'new_alloc>;
3038
3039    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3040        match self {
3041            Self::VariableDeclaration(it) => {
3042                ForStatementLeft::VariableDeclaration(CloneIn::clone_in(it, allocator))
3043            }
3044            Self::AssignmentTargetIdentifier(it) => {
3045                ForStatementLeft::AssignmentTargetIdentifier(CloneIn::clone_in(it, allocator))
3046            }
3047            Self::TSAsExpression(it) => {
3048                ForStatementLeft::TSAsExpression(CloneIn::clone_in(it, allocator))
3049            }
3050            Self::TSSatisfiesExpression(it) => {
3051                ForStatementLeft::TSSatisfiesExpression(CloneIn::clone_in(it, allocator))
3052            }
3053            Self::TSNonNullExpression(it) => {
3054                ForStatementLeft::TSNonNullExpression(CloneIn::clone_in(it, allocator))
3055            }
3056            Self::TSTypeAssertion(it) => {
3057                ForStatementLeft::TSTypeAssertion(CloneIn::clone_in(it, allocator))
3058            }
3059            Self::ComputedMemberExpression(it) => {
3060                ForStatementLeft::ComputedMemberExpression(CloneIn::clone_in(it, allocator))
3061            }
3062            Self::StaticMemberExpression(it) => {
3063                ForStatementLeft::StaticMemberExpression(CloneIn::clone_in(it, allocator))
3064            }
3065            Self::PrivateFieldExpression(it) => {
3066                ForStatementLeft::PrivateFieldExpression(CloneIn::clone_in(it, allocator))
3067            }
3068            Self::ArrayAssignmentTarget(it) => {
3069                ForStatementLeft::ArrayAssignmentTarget(CloneIn::clone_in(it, allocator))
3070            }
3071            Self::ObjectAssignmentTarget(it) => {
3072                ForStatementLeft::ObjectAssignmentTarget(CloneIn::clone_in(it, allocator))
3073            }
3074        }
3075    }
3076
3077    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3078        match self {
3079            Self::VariableDeclaration(it) => ForStatementLeft::VariableDeclaration(
3080                CloneIn::clone_in_with_semantic_ids(it, allocator),
3081            ),
3082            Self::AssignmentTargetIdentifier(it) => ForStatementLeft::AssignmentTargetIdentifier(
3083                CloneIn::clone_in_with_semantic_ids(it, allocator),
3084            ),
3085            Self::TSAsExpression(it) => {
3086                ForStatementLeft::TSAsExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
3087            }
3088            Self::TSSatisfiesExpression(it) => ForStatementLeft::TSSatisfiesExpression(
3089                CloneIn::clone_in_with_semantic_ids(it, allocator),
3090            ),
3091            Self::TSNonNullExpression(it) => ForStatementLeft::TSNonNullExpression(
3092                CloneIn::clone_in_with_semantic_ids(it, allocator),
3093            ),
3094            Self::TSTypeAssertion(it) => ForStatementLeft::TSTypeAssertion(
3095                CloneIn::clone_in_with_semantic_ids(it, allocator),
3096            ),
3097            Self::ComputedMemberExpression(it) => ForStatementLeft::ComputedMemberExpression(
3098                CloneIn::clone_in_with_semantic_ids(it, allocator),
3099            ),
3100            Self::StaticMemberExpression(it) => ForStatementLeft::StaticMemberExpression(
3101                CloneIn::clone_in_with_semantic_ids(it, allocator),
3102            ),
3103            Self::PrivateFieldExpression(it) => ForStatementLeft::PrivateFieldExpression(
3104                CloneIn::clone_in_with_semantic_ids(it, allocator),
3105            ),
3106            Self::ArrayAssignmentTarget(it) => ForStatementLeft::ArrayAssignmentTarget(
3107                CloneIn::clone_in_with_semantic_ids(it, allocator),
3108            ),
3109            Self::ObjectAssignmentTarget(it) => ForStatementLeft::ObjectAssignmentTarget(
3110                CloneIn::clone_in_with_semantic_ids(it, allocator),
3111            ),
3112        }
3113    }
3114}
3115
3116impl<'new_alloc> CloneIn<'new_alloc> for ForOfStatement<'_> {
3117    type Cloned = ForOfStatement<'new_alloc>;
3118
3119    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3120        ForOfStatement {
3121            span: CloneIn::clone_in(&self.span, allocator),
3122            r#await: CloneIn::clone_in(&self.r#await, allocator),
3123            left: CloneIn::clone_in(&self.left, allocator),
3124            right: CloneIn::clone_in(&self.right, allocator),
3125            body: CloneIn::clone_in(&self.body, allocator),
3126            scope_id: Default::default(),
3127        }
3128    }
3129
3130    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3131        ForOfStatement {
3132            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3133            r#await: CloneIn::clone_in_with_semantic_ids(&self.r#await, allocator),
3134            left: CloneIn::clone_in_with_semantic_ids(&self.left, allocator),
3135            right: CloneIn::clone_in_with_semantic_ids(&self.right, allocator),
3136            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
3137            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
3138        }
3139    }
3140}
3141
3142impl<'new_alloc> CloneIn<'new_alloc> for ContinueStatement<'_> {
3143    type Cloned = ContinueStatement<'new_alloc>;
3144
3145    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3146        ContinueStatement {
3147            span: CloneIn::clone_in(&self.span, allocator),
3148            label: CloneIn::clone_in(&self.label, allocator),
3149        }
3150    }
3151
3152    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3153        ContinueStatement {
3154            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3155            label: CloneIn::clone_in_with_semantic_ids(&self.label, allocator),
3156        }
3157    }
3158}
3159
3160impl<'new_alloc> CloneIn<'new_alloc> for BreakStatement<'_> {
3161    type Cloned = BreakStatement<'new_alloc>;
3162
3163    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3164        BreakStatement {
3165            span: CloneIn::clone_in(&self.span, allocator),
3166            label: CloneIn::clone_in(&self.label, allocator),
3167        }
3168    }
3169
3170    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3171        BreakStatement {
3172            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3173            label: CloneIn::clone_in_with_semantic_ids(&self.label, allocator),
3174        }
3175    }
3176}
3177
3178impl<'new_alloc> CloneIn<'new_alloc> for ReturnStatement<'_> {
3179    type Cloned = ReturnStatement<'new_alloc>;
3180
3181    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3182        ReturnStatement {
3183            span: CloneIn::clone_in(&self.span, allocator),
3184            argument: CloneIn::clone_in(&self.argument, allocator),
3185        }
3186    }
3187
3188    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3189        ReturnStatement {
3190            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3191            argument: CloneIn::clone_in_with_semantic_ids(&self.argument, allocator),
3192        }
3193    }
3194}
3195
3196impl<'new_alloc> CloneIn<'new_alloc> for WithStatement<'_> {
3197    type Cloned = WithStatement<'new_alloc>;
3198
3199    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3200        WithStatement {
3201            span: CloneIn::clone_in(&self.span, allocator),
3202            object: CloneIn::clone_in(&self.object, allocator),
3203            body: CloneIn::clone_in(&self.body, allocator),
3204        }
3205    }
3206
3207    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3208        WithStatement {
3209            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3210            object: CloneIn::clone_in_with_semantic_ids(&self.object, allocator),
3211            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
3212        }
3213    }
3214}
3215
3216impl<'new_alloc> CloneIn<'new_alloc> for SwitchStatement<'_> {
3217    type Cloned = SwitchStatement<'new_alloc>;
3218
3219    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3220        SwitchStatement {
3221            span: CloneIn::clone_in(&self.span, allocator),
3222            discriminant: CloneIn::clone_in(&self.discriminant, allocator),
3223            cases: CloneIn::clone_in(&self.cases, allocator),
3224            scope_id: Default::default(),
3225        }
3226    }
3227
3228    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3229        SwitchStatement {
3230            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3231            discriminant: CloneIn::clone_in_with_semantic_ids(&self.discriminant, allocator),
3232            cases: CloneIn::clone_in_with_semantic_ids(&self.cases, allocator),
3233            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
3234        }
3235    }
3236}
3237
3238impl<'new_alloc> CloneIn<'new_alloc> for SwitchCase<'_> {
3239    type Cloned = SwitchCase<'new_alloc>;
3240
3241    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3242        SwitchCase {
3243            span: CloneIn::clone_in(&self.span, allocator),
3244            test: CloneIn::clone_in(&self.test, allocator),
3245            consequent: CloneIn::clone_in(&self.consequent, allocator),
3246        }
3247    }
3248
3249    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3250        SwitchCase {
3251            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3252            test: CloneIn::clone_in_with_semantic_ids(&self.test, allocator),
3253            consequent: CloneIn::clone_in_with_semantic_ids(&self.consequent, allocator),
3254        }
3255    }
3256}
3257
3258impl<'new_alloc> CloneIn<'new_alloc> for LabeledStatement<'_> {
3259    type Cloned = LabeledStatement<'new_alloc>;
3260
3261    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3262        LabeledStatement {
3263            span: CloneIn::clone_in(&self.span, allocator),
3264            label: CloneIn::clone_in(&self.label, allocator),
3265            body: CloneIn::clone_in(&self.body, allocator),
3266        }
3267    }
3268
3269    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3270        LabeledStatement {
3271            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3272            label: CloneIn::clone_in_with_semantic_ids(&self.label, allocator),
3273            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
3274        }
3275    }
3276}
3277
3278impl<'new_alloc> CloneIn<'new_alloc> for ThrowStatement<'_> {
3279    type Cloned = ThrowStatement<'new_alloc>;
3280
3281    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3282        ThrowStatement {
3283            span: CloneIn::clone_in(&self.span, allocator),
3284            argument: CloneIn::clone_in(&self.argument, allocator),
3285        }
3286    }
3287
3288    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3289        ThrowStatement {
3290            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3291            argument: CloneIn::clone_in_with_semantic_ids(&self.argument, allocator),
3292        }
3293    }
3294}
3295
3296impl<'new_alloc> CloneIn<'new_alloc> for TryStatement<'_> {
3297    type Cloned = TryStatement<'new_alloc>;
3298
3299    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3300        TryStatement {
3301            span: CloneIn::clone_in(&self.span, allocator),
3302            block: CloneIn::clone_in(&self.block, allocator),
3303            handler: CloneIn::clone_in(&self.handler, allocator),
3304            finalizer: CloneIn::clone_in(&self.finalizer, allocator),
3305        }
3306    }
3307
3308    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3309        TryStatement {
3310            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3311            block: CloneIn::clone_in_with_semantic_ids(&self.block, allocator),
3312            handler: CloneIn::clone_in_with_semantic_ids(&self.handler, allocator),
3313            finalizer: CloneIn::clone_in_with_semantic_ids(&self.finalizer, allocator),
3314        }
3315    }
3316}
3317
3318impl<'new_alloc> CloneIn<'new_alloc> for CatchClause<'_> {
3319    type Cloned = CatchClause<'new_alloc>;
3320
3321    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3322        CatchClause {
3323            span: CloneIn::clone_in(&self.span, allocator),
3324            param: CloneIn::clone_in(&self.param, allocator),
3325            body: CloneIn::clone_in(&self.body, allocator),
3326            scope_id: Default::default(),
3327        }
3328    }
3329
3330    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3331        CatchClause {
3332            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3333            param: CloneIn::clone_in_with_semantic_ids(&self.param, allocator),
3334            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
3335            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
3336        }
3337    }
3338}
3339
3340impl<'new_alloc> CloneIn<'new_alloc> for CatchParameter<'_> {
3341    type Cloned = CatchParameter<'new_alloc>;
3342
3343    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3344        CatchParameter {
3345            span: CloneIn::clone_in(&self.span, allocator),
3346            pattern: CloneIn::clone_in(&self.pattern, allocator),
3347        }
3348    }
3349
3350    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3351        CatchParameter {
3352            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3353            pattern: CloneIn::clone_in_with_semantic_ids(&self.pattern, allocator),
3354        }
3355    }
3356}
3357
3358impl<'new_alloc> CloneIn<'new_alloc> for DebuggerStatement {
3359    type Cloned = DebuggerStatement;
3360
3361    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3362        DebuggerStatement { span: CloneIn::clone_in(&self.span, allocator) }
3363    }
3364
3365    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3366        DebuggerStatement { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
3367    }
3368}
3369
3370impl<'new_alloc> CloneIn<'new_alloc> for BindingPattern<'_> {
3371    type Cloned = BindingPattern<'new_alloc>;
3372
3373    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3374        BindingPattern {
3375            kind: CloneIn::clone_in(&self.kind, allocator),
3376            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
3377            optional: CloneIn::clone_in(&self.optional, allocator),
3378        }
3379    }
3380
3381    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3382        BindingPattern {
3383            kind: CloneIn::clone_in_with_semantic_ids(&self.kind, allocator),
3384            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
3385            optional: CloneIn::clone_in_with_semantic_ids(&self.optional, allocator),
3386        }
3387    }
3388}
3389
3390impl<'new_alloc> CloneIn<'new_alloc> for BindingPatternKind<'_> {
3391    type Cloned = BindingPatternKind<'new_alloc>;
3392
3393    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3394        match self {
3395            Self::BindingIdentifier(it) => {
3396                BindingPatternKind::BindingIdentifier(CloneIn::clone_in(it, allocator))
3397            }
3398            Self::ObjectPattern(it) => {
3399                BindingPatternKind::ObjectPattern(CloneIn::clone_in(it, allocator))
3400            }
3401            Self::ArrayPattern(it) => {
3402                BindingPatternKind::ArrayPattern(CloneIn::clone_in(it, allocator))
3403            }
3404            Self::AssignmentPattern(it) => {
3405                BindingPatternKind::AssignmentPattern(CloneIn::clone_in(it, allocator))
3406            }
3407        }
3408    }
3409
3410    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3411        match self {
3412            Self::BindingIdentifier(it) => BindingPatternKind::BindingIdentifier(
3413                CloneIn::clone_in_with_semantic_ids(it, allocator),
3414            ),
3415            Self::ObjectPattern(it) => BindingPatternKind::ObjectPattern(
3416                CloneIn::clone_in_with_semantic_ids(it, allocator),
3417            ),
3418            Self::ArrayPattern(it) => {
3419                BindingPatternKind::ArrayPattern(CloneIn::clone_in_with_semantic_ids(it, allocator))
3420            }
3421            Self::AssignmentPattern(it) => BindingPatternKind::AssignmentPattern(
3422                CloneIn::clone_in_with_semantic_ids(it, allocator),
3423            ),
3424        }
3425    }
3426}
3427
3428impl<'new_alloc> CloneIn<'new_alloc> for AssignmentPattern<'_> {
3429    type Cloned = AssignmentPattern<'new_alloc>;
3430
3431    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3432        AssignmentPattern {
3433            span: CloneIn::clone_in(&self.span, allocator),
3434            left: CloneIn::clone_in(&self.left, allocator),
3435            right: CloneIn::clone_in(&self.right, allocator),
3436        }
3437    }
3438
3439    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3440        AssignmentPattern {
3441            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3442            left: CloneIn::clone_in_with_semantic_ids(&self.left, allocator),
3443            right: CloneIn::clone_in_with_semantic_ids(&self.right, allocator),
3444        }
3445    }
3446}
3447
3448impl<'new_alloc> CloneIn<'new_alloc> for ObjectPattern<'_> {
3449    type Cloned = ObjectPattern<'new_alloc>;
3450
3451    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3452        ObjectPattern {
3453            span: CloneIn::clone_in(&self.span, allocator),
3454            properties: CloneIn::clone_in(&self.properties, allocator),
3455            rest: CloneIn::clone_in(&self.rest, allocator),
3456        }
3457    }
3458
3459    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3460        ObjectPattern {
3461            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3462            properties: CloneIn::clone_in_with_semantic_ids(&self.properties, allocator),
3463            rest: CloneIn::clone_in_with_semantic_ids(&self.rest, allocator),
3464        }
3465    }
3466}
3467
3468impl<'new_alloc> CloneIn<'new_alloc> for BindingProperty<'_> {
3469    type Cloned = BindingProperty<'new_alloc>;
3470
3471    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3472        BindingProperty {
3473            span: CloneIn::clone_in(&self.span, allocator),
3474            key: CloneIn::clone_in(&self.key, allocator),
3475            value: CloneIn::clone_in(&self.value, allocator),
3476            shorthand: CloneIn::clone_in(&self.shorthand, allocator),
3477            computed: CloneIn::clone_in(&self.computed, allocator),
3478        }
3479    }
3480
3481    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3482        BindingProperty {
3483            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3484            key: CloneIn::clone_in_with_semantic_ids(&self.key, allocator),
3485            value: CloneIn::clone_in_with_semantic_ids(&self.value, allocator),
3486            shorthand: CloneIn::clone_in_with_semantic_ids(&self.shorthand, allocator),
3487            computed: CloneIn::clone_in_with_semantic_ids(&self.computed, allocator),
3488        }
3489    }
3490}
3491
3492impl<'new_alloc> CloneIn<'new_alloc> for ArrayPattern<'_> {
3493    type Cloned = ArrayPattern<'new_alloc>;
3494
3495    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3496        ArrayPattern {
3497            span: CloneIn::clone_in(&self.span, allocator),
3498            elements: CloneIn::clone_in(&self.elements, allocator),
3499            rest: CloneIn::clone_in(&self.rest, allocator),
3500        }
3501    }
3502
3503    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3504        ArrayPattern {
3505            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3506            elements: CloneIn::clone_in_with_semantic_ids(&self.elements, allocator),
3507            rest: CloneIn::clone_in_with_semantic_ids(&self.rest, allocator),
3508        }
3509    }
3510}
3511
3512impl<'new_alloc> CloneIn<'new_alloc> for BindingRestElement<'_> {
3513    type Cloned = BindingRestElement<'new_alloc>;
3514
3515    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3516        BindingRestElement {
3517            span: CloneIn::clone_in(&self.span, allocator),
3518            argument: CloneIn::clone_in(&self.argument, allocator),
3519        }
3520    }
3521
3522    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3523        BindingRestElement {
3524            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3525            argument: CloneIn::clone_in_with_semantic_ids(&self.argument, allocator),
3526        }
3527    }
3528}
3529
3530impl<'new_alloc> CloneIn<'new_alloc> for Function<'_> {
3531    type Cloned = Function<'new_alloc>;
3532
3533    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3534        Function {
3535            span: CloneIn::clone_in(&self.span, allocator),
3536            r#type: CloneIn::clone_in(&self.r#type, allocator),
3537            id: CloneIn::clone_in(&self.id, allocator),
3538            generator: CloneIn::clone_in(&self.generator, allocator),
3539            r#async: CloneIn::clone_in(&self.r#async, allocator),
3540            declare: CloneIn::clone_in(&self.declare, allocator),
3541            type_parameters: CloneIn::clone_in(&self.type_parameters, allocator),
3542            this_param: CloneIn::clone_in(&self.this_param, allocator),
3543            params: CloneIn::clone_in(&self.params, allocator),
3544            return_type: CloneIn::clone_in(&self.return_type, allocator),
3545            body: CloneIn::clone_in(&self.body, allocator),
3546            scope_id: Default::default(),
3547            pure: CloneIn::clone_in(&self.pure, allocator),
3548            pife: CloneIn::clone_in(&self.pife, allocator),
3549        }
3550    }
3551
3552    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3553        Function {
3554            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3555            r#type: CloneIn::clone_in_with_semantic_ids(&self.r#type, allocator),
3556            id: CloneIn::clone_in_with_semantic_ids(&self.id, allocator),
3557            generator: CloneIn::clone_in_with_semantic_ids(&self.generator, allocator),
3558            r#async: CloneIn::clone_in_with_semantic_ids(&self.r#async, allocator),
3559            declare: CloneIn::clone_in_with_semantic_ids(&self.declare, allocator),
3560            type_parameters: CloneIn::clone_in_with_semantic_ids(&self.type_parameters, allocator),
3561            this_param: CloneIn::clone_in_with_semantic_ids(&self.this_param, allocator),
3562            params: CloneIn::clone_in_with_semantic_ids(&self.params, allocator),
3563            return_type: CloneIn::clone_in_with_semantic_ids(&self.return_type, allocator),
3564            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
3565            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
3566            pure: CloneIn::clone_in_with_semantic_ids(&self.pure, allocator),
3567            pife: CloneIn::clone_in_with_semantic_ids(&self.pife, allocator),
3568        }
3569    }
3570}
3571
3572impl<'new_alloc> CloneIn<'new_alloc> for FunctionType {
3573    type Cloned = FunctionType;
3574
3575    #[inline(always)]
3576    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3577        *self
3578    }
3579
3580    #[inline(always)]
3581    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3582        *self
3583    }
3584}
3585
3586impl<'new_alloc> CloneIn<'new_alloc> for FormalParameters<'_> {
3587    type Cloned = FormalParameters<'new_alloc>;
3588
3589    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3590        FormalParameters {
3591            span: CloneIn::clone_in(&self.span, allocator),
3592            kind: CloneIn::clone_in(&self.kind, allocator),
3593            items: CloneIn::clone_in(&self.items, allocator),
3594            rest: CloneIn::clone_in(&self.rest, allocator),
3595        }
3596    }
3597
3598    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3599        FormalParameters {
3600            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3601            kind: CloneIn::clone_in_with_semantic_ids(&self.kind, allocator),
3602            items: CloneIn::clone_in_with_semantic_ids(&self.items, allocator),
3603            rest: CloneIn::clone_in_with_semantic_ids(&self.rest, allocator),
3604        }
3605    }
3606}
3607
3608impl<'new_alloc> CloneIn<'new_alloc> for FormalParameter<'_> {
3609    type Cloned = FormalParameter<'new_alloc>;
3610
3611    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3612        FormalParameter {
3613            span: CloneIn::clone_in(&self.span, allocator),
3614            decorators: CloneIn::clone_in(&self.decorators, allocator),
3615            pattern: CloneIn::clone_in(&self.pattern, allocator),
3616            accessibility: CloneIn::clone_in(&self.accessibility, allocator),
3617            readonly: CloneIn::clone_in(&self.readonly, allocator),
3618            r#override: CloneIn::clone_in(&self.r#override, allocator),
3619        }
3620    }
3621
3622    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3623        FormalParameter {
3624            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3625            decorators: CloneIn::clone_in_with_semantic_ids(&self.decorators, allocator),
3626            pattern: CloneIn::clone_in_with_semantic_ids(&self.pattern, allocator),
3627            accessibility: CloneIn::clone_in_with_semantic_ids(&self.accessibility, allocator),
3628            readonly: CloneIn::clone_in_with_semantic_ids(&self.readonly, allocator),
3629            r#override: CloneIn::clone_in_with_semantic_ids(&self.r#override, allocator),
3630        }
3631    }
3632}
3633
3634impl<'new_alloc> CloneIn<'new_alloc> for FormalParameterKind {
3635    type Cloned = FormalParameterKind;
3636
3637    #[inline(always)]
3638    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3639        *self
3640    }
3641
3642    #[inline(always)]
3643    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3644        *self
3645    }
3646}
3647
3648impl<'new_alloc> CloneIn<'new_alloc> for FunctionBody<'_> {
3649    type Cloned = FunctionBody<'new_alloc>;
3650
3651    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3652        FunctionBody {
3653            span: CloneIn::clone_in(&self.span, allocator),
3654            directives: CloneIn::clone_in(&self.directives, allocator),
3655            statements: CloneIn::clone_in(&self.statements, allocator),
3656        }
3657    }
3658
3659    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3660        FunctionBody {
3661            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3662            directives: CloneIn::clone_in_with_semantic_ids(&self.directives, allocator),
3663            statements: CloneIn::clone_in_with_semantic_ids(&self.statements, allocator),
3664        }
3665    }
3666}
3667
3668impl<'new_alloc> CloneIn<'new_alloc> for ArrowFunctionExpression<'_> {
3669    type Cloned = ArrowFunctionExpression<'new_alloc>;
3670
3671    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3672        ArrowFunctionExpression {
3673            span: CloneIn::clone_in(&self.span, allocator),
3674            expression: CloneIn::clone_in(&self.expression, allocator),
3675            r#async: CloneIn::clone_in(&self.r#async, allocator),
3676            type_parameters: CloneIn::clone_in(&self.type_parameters, allocator),
3677            params: CloneIn::clone_in(&self.params, allocator),
3678            return_type: CloneIn::clone_in(&self.return_type, allocator),
3679            body: CloneIn::clone_in(&self.body, allocator),
3680            scope_id: Default::default(),
3681            pure: CloneIn::clone_in(&self.pure, allocator),
3682            pife: CloneIn::clone_in(&self.pife, allocator),
3683        }
3684    }
3685
3686    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3687        ArrowFunctionExpression {
3688            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3689            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
3690            r#async: CloneIn::clone_in_with_semantic_ids(&self.r#async, allocator),
3691            type_parameters: CloneIn::clone_in_with_semantic_ids(&self.type_parameters, allocator),
3692            params: CloneIn::clone_in_with_semantic_ids(&self.params, allocator),
3693            return_type: CloneIn::clone_in_with_semantic_ids(&self.return_type, allocator),
3694            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
3695            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
3696            pure: CloneIn::clone_in_with_semantic_ids(&self.pure, allocator),
3697            pife: CloneIn::clone_in_with_semantic_ids(&self.pife, allocator),
3698        }
3699    }
3700}
3701
3702impl<'new_alloc> CloneIn<'new_alloc> for YieldExpression<'_> {
3703    type Cloned = YieldExpression<'new_alloc>;
3704
3705    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3706        YieldExpression {
3707            span: CloneIn::clone_in(&self.span, allocator),
3708            delegate: CloneIn::clone_in(&self.delegate, allocator),
3709            argument: CloneIn::clone_in(&self.argument, allocator),
3710        }
3711    }
3712
3713    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3714        YieldExpression {
3715            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3716            delegate: CloneIn::clone_in_with_semantic_ids(&self.delegate, allocator),
3717            argument: CloneIn::clone_in_with_semantic_ids(&self.argument, allocator),
3718        }
3719    }
3720}
3721
3722impl<'new_alloc> CloneIn<'new_alloc> for Class<'_> {
3723    type Cloned = Class<'new_alloc>;
3724
3725    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3726        Class {
3727            span: CloneIn::clone_in(&self.span, allocator),
3728            r#type: CloneIn::clone_in(&self.r#type, allocator),
3729            decorators: CloneIn::clone_in(&self.decorators, allocator),
3730            id: CloneIn::clone_in(&self.id, allocator),
3731            type_parameters: CloneIn::clone_in(&self.type_parameters, allocator),
3732            super_class: CloneIn::clone_in(&self.super_class, allocator),
3733            super_type_arguments: CloneIn::clone_in(&self.super_type_arguments, allocator),
3734            implements: CloneIn::clone_in(&self.implements, allocator),
3735            body: CloneIn::clone_in(&self.body, allocator),
3736            r#abstract: CloneIn::clone_in(&self.r#abstract, allocator),
3737            declare: CloneIn::clone_in(&self.declare, allocator),
3738            scope_id: Default::default(),
3739        }
3740    }
3741
3742    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3743        Class {
3744            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3745            r#type: CloneIn::clone_in_with_semantic_ids(&self.r#type, allocator),
3746            decorators: CloneIn::clone_in_with_semantic_ids(&self.decorators, allocator),
3747            id: CloneIn::clone_in_with_semantic_ids(&self.id, allocator),
3748            type_parameters: CloneIn::clone_in_with_semantic_ids(&self.type_parameters, allocator),
3749            super_class: CloneIn::clone_in_with_semantic_ids(&self.super_class, allocator),
3750            super_type_arguments: CloneIn::clone_in_with_semantic_ids(
3751                &self.super_type_arguments,
3752                allocator,
3753            ),
3754            implements: CloneIn::clone_in_with_semantic_ids(&self.implements, allocator),
3755            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
3756            r#abstract: CloneIn::clone_in_with_semantic_ids(&self.r#abstract, allocator),
3757            declare: CloneIn::clone_in_with_semantic_ids(&self.declare, allocator),
3758            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
3759        }
3760    }
3761}
3762
3763impl<'new_alloc> CloneIn<'new_alloc> for ClassType {
3764    type Cloned = ClassType;
3765
3766    #[inline(always)]
3767    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3768        *self
3769    }
3770
3771    #[inline(always)]
3772    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3773        *self
3774    }
3775}
3776
3777impl<'new_alloc> CloneIn<'new_alloc> for ClassBody<'_> {
3778    type Cloned = ClassBody<'new_alloc>;
3779
3780    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3781        ClassBody {
3782            span: CloneIn::clone_in(&self.span, allocator),
3783            body: CloneIn::clone_in(&self.body, allocator),
3784        }
3785    }
3786
3787    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3788        ClassBody {
3789            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3790            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
3791        }
3792    }
3793}
3794
3795impl<'new_alloc> CloneIn<'new_alloc> for ClassElement<'_> {
3796    type Cloned = ClassElement<'new_alloc>;
3797
3798    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3799        match self {
3800            Self::StaticBlock(it) => ClassElement::StaticBlock(CloneIn::clone_in(it, allocator)),
3801            Self::MethodDefinition(it) => {
3802                ClassElement::MethodDefinition(CloneIn::clone_in(it, allocator))
3803            }
3804            Self::PropertyDefinition(it) => {
3805                ClassElement::PropertyDefinition(CloneIn::clone_in(it, allocator))
3806            }
3807            Self::AccessorProperty(it) => {
3808                ClassElement::AccessorProperty(CloneIn::clone_in(it, allocator))
3809            }
3810            Self::TSIndexSignature(it) => {
3811                ClassElement::TSIndexSignature(CloneIn::clone_in(it, allocator))
3812            }
3813        }
3814    }
3815
3816    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3817        match self {
3818            Self::StaticBlock(it) => {
3819                ClassElement::StaticBlock(CloneIn::clone_in_with_semantic_ids(it, allocator))
3820            }
3821            Self::MethodDefinition(it) => {
3822                ClassElement::MethodDefinition(CloneIn::clone_in_with_semantic_ids(it, allocator))
3823            }
3824            Self::PropertyDefinition(it) => {
3825                ClassElement::PropertyDefinition(CloneIn::clone_in_with_semantic_ids(it, allocator))
3826            }
3827            Self::AccessorProperty(it) => {
3828                ClassElement::AccessorProperty(CloneIn::clone_in_with_semantic_ids(it, allocator))
3829            }
3830            Self::TSIndexSignature(it) => {
3831                ClassElement::TSIndexSignature(CloneIn::clone_in_with_semantic_ids(it, allocator))
3832            }
3833        }
3834    }
3835}
3836
3837impl<'new_alloc> CloneIn<'new_alloc> for MethodDefinition<'_> {
3838    type Cloned = MethodDefinition<'new_alloc>;
3839
3840    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3841        MethodDefinition {
3842            span: CloneIn::clone_in(&self.span, allocator),
3843            r#type: CloneIn::clone_in(&self.r#type, allocator),
3844            decorators: CloneIn::clone_in(&self.decorators, allocator),
3845            key: CloneIn::clone_in(&self.key, allocator),
3846            value: CloneIn::clone_in(&self.value, allocator),
3847            kind: CloneIn::clone_in(&self.kind, allocator),
3848            computed: CloneIn::clone_in(&self.computed, allocator),
3849            r#static: CloneIn::clone_in(&self.r#static, allocator),
3850            r#override: CloneIn::clone_in(&self.r#override, allocator),
3851            optional: CloneIn::clone_in(&self.optional, allocator),
3852            accessibility: CloneIn::clone_in(&self.accessibility, allocator),
3853        }
3854    }
3855
3856    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3857        MethodDefinition {
3858            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3859            r#type: CloneIn::clone_in_with_semantic_ids(&self.r#type, allocator),
3860            decorators: CloneIn::clone_in_with_semantic_ids(&self.decorators, allocator),
3861            key: CloneIn::clone_in_with_semantic_ids(&self.key, allocator),
3862            value: CloneIn::clone_in_with_semantic_ids(&self.value, allocator),
3863            kind: CloneIn::clone_in_with_semantic_ids(&self.kind, allocator),
3864            computed: CloneIn::clone_in_with_semantic_ids(&self.computed, allocator),
3865            r#static: CloneIn::clone_in_with_semantic_ids(&self.r#static, allocator),
3866            r#override: CloneIn::clone_in_with_semantic_ids(&self.r#override, allocator),
3867            optional: CloneIn::clone_in_with_semantic_ids(&self.optional, allocator),
3868            accessibility: CloneIn::clone_in_with_semantic_ids(&self.accessibility, allocator),
3869        }
3870    }
3871}
3872
3873impl<'new_alloc> CloneIn<'new_alloc> for MethodDefinitionType {
3874    type Cloned = MethodDefinitionType;
3875
3876    #[inline(always)]
3877    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3878        *self
3879    }
3880
3881    #[inline(always)]
3882    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3883        *self
3884    }
3885}
3886
3887impl<'new_alloc> CloneIn<'new_alloc> for PropertyDefinition<'_> {
3888    type Cloned = PropertyDefinition<'new_alloc>;
3889
3890    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3891        PropertyDefinition {
3892            span: CloneIn::clone_in(&self.span, allocator),
3893            r#type: CloneIn::clone_in(&self.r#type, allocator),
3894            decorators: CloneIn::clone_in(&self.decorators, allocator),
3895            key: CloneIn::clone_in(&self.key, allocator),
3896            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
3897            value: CloneIn::clone_in(&self.value, allocator),
3898            computed: CloneIn::clone_in(&self.computed, allocator),
3899            r#static: CloneIn::clone_in(&self.r#static, allocator),
3900            declare: CloneIn::clone_in(&self.declare, allocator),
3901            r#override: CloneIn::clone_in(&self.r#override, allocator),
3902            optional: CloneIn::clone_in(&self.optional, allocator),
3903            definite: CloneIn::clone_in(&self.definite, allocator),
3904            readonly: CloneIn::clone_in(&self.readonly, allocator),
3905            accessibility: CloneIn::clone_in(&self.accessibility, allocator),
3906        }
3907    }
3908
3909    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3910        PropertyDefinition {
3911            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3912            r#type: CloneIn::clone_in_with_semantic_ids(&self.r#type, allocator),
3913            decorators: CloneIn::clone_in_with_semantic_ids(&self.decorators, allocator),
3914            key: CloneIn::clone_in_with_semantic_ids(&self.key, allocator),
3915            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
3916            value: CloneIn::clone_in_with_semantic_ids(&self.value, allocator),
3917            computed: CloneIn::clone_in_with_semantic_ids(&self.computed, allocator),
3918            r#static: CloneIn::clone_in_with_semantic_ids(&self.r#static, allocator),
3919            declare: CloneIn::clone_in_with_semantic_ids(&self.declare, allocator),
3920            r#override: CloneIn::clone_in_with_semantic_ids(&self.r#override, allocator),
3921            optional: CloneIn::clone_in_with_semantic_ids(&self.optional, allocator),
3922            definite: CloneIn::clone_in_with_semantic_ids(&self.definite, allocator),
3923            readonly: CloneIn::clone_in_with_semantic_ids(&self.readonly, allocator),
3924            accessibility: CloneIn::clone_in_with_semantic_ids(&self.accessibility, allocator),
3925        }
3926    }
3927}
3928
3929impl<'new_alloc> CloneIn<'new_alloc> for PropertyDefinitionType {
3930    type Cloned = PropertyDefinitionType;
3931
3932    #[inline(always)]
3933    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3934        *self
3935    }
3936
3937    #[inline(always)]
3938    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3939        *self
3940    }
3941}
3942
3943impl<'new_alloc> CloneIn<'new_alloc> for MethodDefinitionKind {
3944    type Cloned = MethodDefinitionKind;
3945
3946    #[inline(always)]
3947    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3948        *self
3949    }
3950
3951    #[inline(always)]
3952    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3953        *self
3954    }
3955}
3956
3957impl<'new_alloc> CloneIn<'new_alloc> for PrivateIdentifier<'_> {
3958    type Cloned = PrivateIdentifier<'new_alloc>;
3959
3960    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3961        PrivateIdentifier {
3962            span: CloneIn::clone_in(&self.span, allocator),
3963            name: CloneIn::clone_in(&self.name, allocator),
3964        }
3965    }
3966
3967    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3968        PrivateIdentifier {
3969            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3970            name: CloneIn::clone_in_with_semantic_ids(&self.name, allocator),
3971        }
3972    }
3973}
3974
3975impl<'new_alloc> CloneIn<'new_alloc> for StaticBlock<'_> {
3976    type Cloned = StaticBlock<'new_alloc>;
3977
3978    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3979        StaticBlock {
3980            span: CloneIn::clone_in(&self.span, allocator),
3981            body: CloneIn::clone_in(&self.body, allocator),
3982            scope_id: Default::default(),
3983        }
3984    }
3985
3986    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3987        StaticBlock {
3988            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
3989            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
3990            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
3991        }
3992    }
3993}
3994
3995impl<'new_alloc> CloneIn<'new_alloc> for ModuleDeclaration<'_> {
3996    type Cloned = ModuleDeclaration<'new_alloc>;
3997
3998    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
3999        match self {
4000            Self::ImportDeclaration(it) => {
4001                ModuleDeclaration::ImportDeclaration(CloneIn::clone_in(it, allocator))
4002            }
4003            Self::ExportAllDeclaration(it) => {
4004                ModuleDeclaration::ExportAllDeclaration(CloneIn::clone_in(it, allocator))
4005            }
4006            Self::ExportDefaultDeclaration(it) => {
4007                ModuleDeclaration::ExportDefaultDeclaration(CloneIn::clone_in(it, allocator))
4008            }
4009            Self::ExportNamedDeclaration(it) => {
4010                ModuleDeclaration::ExportNamedDeclaration(CloneIn::clone_in(it, allocator))
4011            }
4012            Self::TSExportAssignment(it) => {
4013                ModuleDeclaration::TSExportAssignment(CloneIn::clone_in(it, allocator))
4014            }
4015            Self::TSNamespaceExportDeclaration(it) => {
4016                ModuleDeclaration::TSNamespaceExportDeclaration(CloneIn::clone_in(it, allocator))
4017            }
4018        }
4019    }
4020
4021    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4022        match self {
4023            Self::ImportDeclaration(it) => ModuleDeclaration::ImportDeclaration(
4024                CloneIn::clone_in_with_semantic_ids(it, allocator),
4025            ),
4026            Self::ExportAllDeclaration(it) => ModuleDeclaration::ExportAllDeclaration(
4027                CloneIn::clone_in_with_semantic_ids(it, allocator),
4028            ),
4029            Self::ExportDefaultDeclaration(it) => ModuleDeclaration::ExportDefaultDeclaration(
4030                CloneIn::clone_in_with_semantic_ids(it, allocator),
4031            ),
4032            Self::ExportNamedDeclaration(it) => ModuleDeclaration::ExportNamedDeclaration(
4033                CloneIn::clone_in_with_semantic_ids(it, allocator),
4034            ),
4035            Self::TSExportAssignment(it) => ModuleDeclaration::TSExportAssignment(
4036                CloneIn::clone_in_with_semantic_ids(it, allocator),
4037            ),
4038            Self::TSNamespaceExportDeclaration(it) => {
4039                ModuleDeclaration::TSNamespaceExportDeclaration(
4040                    CloneIn::clone_in_with_semantic_ids(it, allocator),
4041                )
4042            }
4043        }
4044    }
4045}
4046
4047impl<'new_alloc> CloneIn<'new_alloc> for AccessorPropertyType {
4048    type Cloned = AccessorPropertyType;
4049
4050    #[inline(always)]
4051    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4052        *self
4053    }
4054
4055    #[inline(always)]
4056    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4057        *self
4058    }
4059}
4060
4061impl<'new_alloc> CloneIn<'new_alloc> for AccessorProperty<'_> {
4062    type Cloned = AccessorProperty<'new_alloc>;
4063
4064    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4065        AccessorProperty {
4066            span: CloneIn::clone_in(&self.span, allocator),
4067            r#type: CloneIn::clone_in(&self.r#type, allocator),
4068            decorators: CloneIn::clone_in(&self.decorators, allocator),
4069            key: CloneIn::clone_in(&self.key, allocator),
4070            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
4071            value: CloneIn::clone_in(&self.value, allocator),
4072            computed: CloneIn::clone_in(&self.computed, allocator),
4073            r#static: CloneIn::clone_in(&self.r#static, allocator),
4074            r#override: CloneIn::clone_in(&self.r#override, allocator),
4075            definite: CloneIn::clone_in(&self.definite, allocator),
4076            accessibility: CloneIn::clone_in(&self.accessibility, allocator),
4077        }
4078    }
4079
4080    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4081        AccessorProperty {
4082            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4083            r#type: CloneIn::clone_in_with_semantic_ids(&self.r#type, allocator),
4084            decorators: CloneIn::clone_in_with_semantic_ids(&self.decorators, allocator),
4085            key: CloneIn::clone_in_with_semantic_ids(&self.key, allocator),
4086            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
4087            value: CloneIn::clone_in_with_semantic_ids(&self.value, allocator),
4088            computed: CloneIn::clone_in_with_semantic_ids(&self.computed, allocator),
4089            r#static: CloneIn::clone_in_with_semantic_ids(&self.r#static, allocator),
4090            r#override: CloneIn::clone_in_with_semantic_ids(&self.r#override, allocator),
4091            definite: CloneIn::clone_in_with_semantic_ids(&self.definite, allocator),
4092            accessibility: CloneIn::clone_in_with_semantic_ids(&self.accessibility, allocator),
4093        }
4094    }
4095}
4096
4097impl<'new_alloc> CloneIn<'new_alloc> for ImportExpression<'_> {
4098    type Cloned = ImportExpression<'new_alloc>;
4099
4100    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4101        ImportExpression {
4102            span: CloneIn::clone_in(&self.span, allocator),
4103            source: CloneIn::clone_in(&self.source, allocator),
4104            options: CloneIn::clone_in(&self.options, allocator),
4105            phase: CloneIn::clone_in(&self.phase, allocator),
4106        }
4107    }
4108
4109    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4110        ImportExpression {
4111            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4112            source: CloneIn::clone_in_with_semantic_ids(&self.source, allocator),
4113            options: CloneIn::clone_in_with_semantic_ids(&self.options, allocator),
4114            phase: CloneIn::clone_in_with_semantic_ids(&self.phase, allocator),
4115        }
4116    }
4117}
4118
4119impl<'new_alloc> CloneIn<'new_alloc> for ImportDeclaration<'_> {
4120    type Cloned = ImportDeclaration<'new_alloc>;
4121
4122    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4123        ImportDeclaration {
4124            span: CloneIn::clone_in(&self.span, allocator),
4125            specifiers: CloneIn::clone_in(&self.specifiers, allocator),
4126            source: CloneIn::clone_in(&self.source, allocator),
4127            phase: CloneIn::clone_in(&self.phase, allocator),
4128            with_clause: CloneIn::clone_in(&self.with_clause, allocator),
4129            import_kind: CloneIn::clone_in(&self.import_kind, allocator),
4130        }
4131    }
4132
4133    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4134        ImportDeclaration {
4135            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4136            specifiers: CloneIn::clone_in_with_semantic_ids(&self.specifiers, allocator),
4137            source: CloneIn::clone_in_with_semantic_ids(&self.source, allocator),
4138            phase: CloneIn::clone_in_with_semantic_ids(&self.phase, allocator),
4139            with_clause: CloneIn::clone_in_with_semantic_ids(&self.with_clause, allocator),
4140            import_kind: CloneIn::clone_in_with_semantic_ids(&self.import_kind, allocator),
4141        }
4142    }
4143}
4144
4145impl<'new_alloc> CloneIn<'new_alloc> for ImportPhase {
4146    type Cloned = ImportPhase;
4147
4148    #[inline(always)]
4149    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4150        *self
4151    }
4152
4153    #[inline(always)]
4154    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4155        *self
4156    }
4157}
4158
4159impl<'new_alloc> CloneIn<'new_alloc> for ImportDeclarationSpecifier<'_> {
4160    type Cloned = ImportDeclarationSpecifier<'new_alloc>;
4161
4162    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4163        match self {
4164            Self::ImportSpecifier(it) => {
4165                ImportDeclarationSpecifier::ImportSpecifier(CloneIn::clone_in(it, allocator))
4166            }
4167            Self::ImportDefaultSpecifier(it) => {
4168                ImportDeclarationSpecifier::ImportDefaultSpecifier(CloneIn::clone_in(it, allocator))
4169            }
4170            Self::ImportNamespaceSpecifier(it) => {
4171                ImportDeclarationSpecifier::ImportNamespaceSpecifier(CloneIn::clone_in(
4172                    it, allocator,
4173                ))
4174            }
4175        }
4176    }
4177
4178    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4179        match self {
4180            Self::ImportSpecifier(it) => ImportDeclarationSpecifier::ImportSpecifier(
4181                CloneIn::clone_in_with_semantic_ids(it, allocator),
4182            ),
4183            Self::ImportDefaultSpecifier(it) => ImportDeclarationSpecifier::ImportDefaultSpecifier(
4184                CloneIn::clone_in_with_semantic_ids(it, allocator),
4185            ),
4186            Self::ImportNamespaceSpecifier(it) => {
4187                ImportDeclarationSpecifier::ImportNamespaceSpecifier(
4188                    CloneIn::clone_in_with_semantic_ids(it, allocator),
4189                )
4190            }
4191        }
4192    }
4193}
4194
4195impl<'new_alloc> CloneIn<'new_alloc> for ImportSpecifier<'_> {
4196    type Cloned = ImportSpecifier<'new_alloc>;
4197
4198    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4199        ImportSpecifier {
4200            span: CloneIn::clone_in(&self.span, allocator),
4201            imported: CloneIn::clone_in(&self.imported, allocator),
4202            local: CloneIn::clone_in(&self.local, allocator),
4203            import_kind: CloneIn::clone_in(&self.import_kind, allocator),
4204        }
4205    }
4206
4207    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4208        ImportSpecifier {
4209            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4210            imported: CloneIn::clone_in_with_semantic_ids(&self.imported, allocator),
4211            local: CloneIn::clone_in_with_semantic_ids(&self.local, allocator),
4212            import_kind: CloneIn::clone_in_with_semantic_ids(&self.import_kind, allocator),
4213        }
4214    }
4215}
4216
4217impl<'new_alloc> CloneIn<'new_alloc> for ImportDefaultSpecifier<'_> {
4218    type Cloned = ImportDefaultSpecifier<'new_alloc>;
4219
4220    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4221        ImportDefaultSpecifier {
4222            span: CloneIn::clone_in(&self.span, allocator),
4223            local: CloneIn::clone_in(&self.local, allocator),
4224        }
4225    }
4226
4227    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4228        ImportDefaultSpecifier {
4229            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4230            local: CloneIn::clone_in_with_semantic_ids(&self.local, allocator),
4231        }
4232    }
4233}
4234
4235impl<'new_alloc> CloneIn<'new_alloc> for ImportNamespaceSpecifier<'_> {
4236    type Cloned = ImportNamespaceSpecifier<'new_alloc>;
4237
4238    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4239        ImportNamespaceSpecifier {
4240            span: CloneIn::clone_in(&self.span, allocator),
4241            local: CloneIn::clone_in(&self.local, allocator),
4242        }
4243    }
4244
4245    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4246        ImportNamespaceSpecifier {
4247            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4248            local: CloneIn::clone_in_with_semantic_ids(&self.local, allocator),
4249        }
4250    }
4251}
4252
4253impl<'new_alloc> CloneIn<'new_alloc> for WithClause<'_> {
4254    type Cloned = WithClause<'new_alloc>;
4255
4256    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4257        WithClause {
4258            span: CloneIn::clone_in(&self.span, allocator),
4259            keyword: CloneIn::clone_in(&self.keyword, allocator),
4260            with_entries: CloneIn::clone_in(&self.with_entries, allocator),
4261        }
4262    }
4263
4264    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4265        WithClause {
4266            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4267            keyword: CloneIn::clone_in_with_semantic_ids(&self.keyword, allocator),
4268            with_entries: CloneIn::clone_in_with_semantic_ids(&self.with_entries, allocator),
4269        }
4270    }
4271}
4272
4273impl<'new_alloc> CloneIn<'new_alloc> for WithClauseKeyword {
4274    type Cloned = WithClauseKeyword;
4275
4276    #[inline(always)]
4277    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4278        *self
4279    }
4280
4281    #[inline(always)]
4282    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4283        *self
4284    }
4285}
4286
4287impl<'new_alloc> CloneIn<'new_alloc> for ImportAttribute<'_> {
4288    type Cloned = ImportAttribute<'new_alloc>;
4289
4290    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4291        ImportAttribute {
4292            span: CloneIn::clone_in(&self.span, allocator),
4293            key: CloneIn::clone_in(&self.key, allocator),
4294            value: CloneIn::clone_in(&self.value, allocator),
4295        }
4296    }
4297
4298    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4299        ImportAttribute {
4300            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4301            key: CloneIn::clone_in_with_semantic_ids(&self.key, allocator),
4302            value: CloneIn::clone_in_with_semantic_ids(&self.value, allocator),
4303        }
4304    }
4305}
4306
4307impl<'new_alloc> CloneIn<'new_alloc> for ImportAttributeKey<'_> {
4308    type Cloned = ImportAttributeKey<'new_alloc>;
4309
4310    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4311        match self {
4312            Self::Identifier(it) => {
4313                ImportAttributeKey::Identifier(CloneIn::clone_in(it, allocator))
4314            }
4315            Self::StringLiteral(it) => {
4316                ImportAttributeKey::StringLiteral(CloneIn::clone_in(it, allocator))
4317            }
4318        }
4319    }
4320
4321    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4322        match self {
4323            Self::Identifier(it) => {
4324                ImportAttributeKey::Identifier(CloneIn::clone_in_with_semantic_ids(it, allocator))
4325            }
4326            Self::StringLiteral(it) => ImportAttributeKey::StringLiteral(
4327                CloneIn::clone_in_with_semantic_ids(it, allocator),
4328            ),
4329        }
4330    }
4331}
4332
4333impl<'new_alloc> CloneIn<'new_alloc> for ExportNamedDeclaration<'_> {
4334    type Cloned = ExportNamedDeclaration<'new_alloc>;
4335
4336    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4337        ExportNamedDeclaration {
4338            span: CloneIn::clone_in(&self.span, allocator),
4339            declaration: CloneIn::clone_in(&self.declaration, allocator),
4340            specifiers: CloneIn::clone_in(&self.specifiers, allocator),
4341            source: CloneIn::clone_in(&self.source, allocator),
4342            export_kind: CloneIn::clone_in(&self.export_kind, allocator),
4343            with_clause: CloneIn::clone_in(&self.with_clause, allocator),
4344        }
4345    }
4346
4347    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4348        ExportNamedDeclaration {
4349            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4350            declaration: CloneIn::clone_in_with_semantic_ids(&self.declaration, allocator),
4351            specifiers: CloneIn::clone_in_with_semantic_ids(&self.specifiers, allocator),
4352            source: CloneIn::clone_in_with_semantic_ids(&self.source, allocator),
4353            export_kind: CloneIn::clone_in_with_semantic_ids(&self.export_kind, allocator),
4354            with_clause: CloneIn::clone_in_with_semantic_ids(&self.with_clause, allocator),
4355        }
4356    }
4357}
4358
4359impl<'new_alloc> CloneIn<'new_alloc> for ExportDefaultDeclaration<'_> {
4360    type Cloned = ExportDefaultDeclaration<'new_alloc>;
4361
4362    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4363        ExportDefaultDeclaration {
4364            span: CloneIn::clone_in(&self.span, allocator),
4365            declaration: CloneIn::clone_in(&self.declaration, allocator),
4366        }
4367    }
4368
4369    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4370        ExportDefaultDeclaration {
4371            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4372            declaration: CloneIn::clone_in_with_semantic_ids(&self.declaration, allocator),
4373        }
4374    }
4375}
4376
4377impl<'new_alloc> CloneIn<'new_alloc> for ExportAllDeclaration<'_> {
4378    type Cloned = ExportAllDeclaration<'new_alloc>;
4379
4380    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4381        ExportAllDeclaration {
4382            span: CloneIn::clone_in(&self.span, allocator),
4383            exported: CloneIn::clone_in(&self.exported, allocator),
4384            source: CloneIn::clone_in(&self.source, allocator),
4385            with_clause: CloneIn::clone_in(&self.with_clause, allocator),
4386            export_kind: CloneIn::clone_in(&self.export_kind, allocator),
4387        }
4388    }
4389
4390    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4391        ExportAllDeclaration {
4392            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4393            exported: CloneIn::clone_in_with_semantic_ids(&self.exported, allocator),
4394            source: CloneIn::clone_in_with_semantic_ids(&self.source, allocator),
4395            with_clause: CloneIn::clone_in_with_semantic_ids(&self.with_clause, allocator),
4396            export_kind: CloneIn::clone_in_with_semantic_ids(&self.export_kind, allocator),
4397        }
4398    }
4399}
4400
4401impl<'new_alloc> CloneIn<'new_alloc> for ExportSpecifier<'_> {
4402    type Cloned = ExportSpecifier<'new_alloc>;
4403
4404    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4405        ExportSpecifier {
4406            span: CloneIn::clone_in(&self.span, allocator),
4407            local: CloneIn::clone_in(&self.local, allocator),
4408            exported: CloneIn::clone_in(&self.exported, allocator),
4409            export_kind: CloneIn::clone_in(&self.export_kind, allocator),
4410        }
4411    }
4412
4413    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4414        ExportSpecifier {
4415            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4416            local: CloneIn::clone_in_with_semantic_ids(&self.local, allocator),
4417            exported: CloneIn::clone_in_with_semantic_ids(&self.exported, allocator),
4418            export_kind: CloneIn::clone_in_with_semantic_ids(&self.export_kind, allocator),
4419        }
4420    }
4421}
4422
4423impl<'new_alloc> CloneIn<'new_alloc> for ExportDefaultDeclarationKind<'_> {
4424    type Cloned = ExportDefaultDeclarationKind<'new_alloc>;
4425
4426    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4427        match self {
4428            Self::FunctionDeclaration(it) => {
4429                ExportDefaultDeclarationKind::FunctionDeclaration(CloneIn::clone_in(it, allocator))
4430            }
4431            Self::ClassDeclaration(it) => {
4432                ExportDefaultDeclarationKind::ClassDeclaration(CloneIn::clone_in(it, allocator))
4433            }
4434            Self::TSInterfaceDeclaration(it) => {
4435                ExportDefaultDeclarationKind::TSInterfaceDeclaration(CloneIn::clone_in(
4436                    it, allocator,
4437                ))
4438            }
4439            Self::BooleanLiteral(it) => {
4440                ExportDefaultDeclarationKind::BooleanLiteral(CloneIn::clone_in(it, allocator))
4441            }
4442            Self::NullLiteral(it) => {
4443                ExportDefaultDeclarationKind::NullLiteral(CloneIn::clone_in(it, allocator))
4444            }
4445            Self::NumericLiteral(it) => {
4446                ExportDefaultDeclarationKind::NumericLiteral(CloneIn::clone_in(it, allocator))
4447            }
4448            Self::BigIntLiteral(it) => {
4449                ExportDefaultDeclarationKind::BigIntLiteral(CloneIn::clone_in(it, allocator))
4450            }
4451            Self::RegExpLiteral(it) => {
4452                ExportDefaultDeclarationKind::RegExpLiteral(CloneIn::clone_in(it, allocator))
4453            }
4454            Self::StringLiteral(it) => {
4455                ExportDefaultDeclarationKind::StringLiteral(CloneIn::clone_in(it, allocator))
4456            }
4457            Self::TemplateLiteral(it) => {
4458                ExportDefaultDeclarationKind::TemplateLiteral(CloneIn::clone_in(it, allocator))
4459            }
4460            Self::Identifier(it) => {
4461                ExportDefaultDeclarationKind::Identifier(CloneIn::clone_in(it, allocator))
4462            }
4463            Self::MetaProperty(it) => {
4464                ExportDefaultDeclarationKind::MetaProperty(CloneIn::clone_in(it, allocator))
4465            }
4466            Self::Super(it) => {
4467                ExportDefaultDeclarationKind::Super(CloneIn::clone_in(it, allocator))
4468            }
4469            Self::ArrayExpression(it) => {
4470                ExportDefaultDeclarationKind::ArrayExpression(CloneIn::clone_in(it, allocator))
4471            }
4472            Self::ArrowFunctionExpression(it) => {
4473                ExportDefaultDeclarationKind::ArrowFunctionExpression(CloneIn::clone_in(
4474                    it, allocator,
4475                ))
4476            }
4477            Self::AssignmentExpression(it) => {
4478                ExportDefaultDeclarationKind::AssignmentExpression(CloneIn::clone_in(it, allocator))
4479            }
4480            Self::AwaitExpression(it) => {
4481                ExportDefaultDeclarationKind::AwaitExpression(CloneIn::clone_in(it, allocator))
4482            }
4483            Self::BinaryExpression(it) => {
4484                ExportDefaultDeclarationKind::BinaryExpression(CloneIn::clone_in(it, allocator))
4485            }
4486            Self::CallExpression(it) => {
4487                ExportDefaultDeclarationKind::CallExpression(CloneIn::clone_in(it, allocator))
4488            }
4489            Self::ChainExpression(it) => {
4490                ExportDefaultDeclarationKind::ChainExpression(CloneIn::clone_in(it, allocator))
4491            }
4492            Self::ClassExpression(it) => {
4493                ExportDefaultDeclarationKind::ClassExpression(CloneIn::clone_in(it, allocator))
4494            }
4495            Self::ConditionalExpression(it) => ExportDefaultDeclarationKind::ConditionalExpression(
4496                CloneIn::clone_in(it, allocator),
4497            ),
4498            Self::FunctionExpression(it) => {
4499                ExportDefaultDeclarationKind::FunctionExpression(CloneIn::clone_in(it, allocator))
4500            }
4501            Self::ImportExpression(it) => {
4502                ExportDefaultDeclarationKind::ImportExpression(CloneIn::clone_in(it, allocator))
4503            }
4504            Self::LogicalExpression(it) => {
4505                ExportDefaultDeclarationKind::LogicalExpression(CloneIn::clone_in(it, allocator))
4506            }
4507            Self::NewExpression(it) => {
4508                ExportDefaultDeclarationKind::NewExpression(CloneIn::clone_in(it, allocator))
4509            }
4510            Self::ObjectExpression(it) => {
4511                ExportDefaultDeclarationKind::ObjectExpression(CloneIn::clone_in(it, allocator))
4512            }
4513            Self::ParenthesizedExpression(it) => {
4514                ExportDefaultDeclarationKind::ParenthesizedExpression(CloneIn::clone_in(
4515                    it, allocator,
4516                ))
4517            }
4518            Self::SequenceExpression(it) => {
4519                ExportDefaultDeclarationKind::SequenceExpression(CloneIn::clone_in(it, allocator))
4520            }
4521            Self::TaggedTemplateExpression(it) => {
4522                ExportDefaultDeclarationKind::TaggedTemplateExpression(CloneIn::clone_in(
4523                    it, allocator,
4524                ))
4525            }
4526            Self::ThisExpression(it) => {
4527                ExportDefaultDeclarationKind::ThisExpression(CloneIn::clone_in(it, allocator))
4528            }
4529            Self::UnaryExpression(it) => {
4530                ExportDefaultDeclarationKind::UnaryExpression(CloneIn::clone_in(it, allocator))
4531            }
4532            Self::UpdateExpression(it) => {
4533                ExportDefaultDeclarationKind::UpdateExpression(CloneIn::clone_in(it, allocator))
4534            }
4535            Self::YieldExpression(it) => {
4536                ExportDefaultDeclarationKind::YieldExpression(CloneIn::clone_in(it, allocator))
4537            }
4538            Self::PrivateInExpression(it) => {
4539                ExportDefaultDeclarationKind::PrivateInExpression(CloneIn::clone_in(it, allocator))
4540            }
4541            Self::JSXElement(it) => {
4542                ExportDefaultDeclarationKind::JSXElement(CloneIn::clone_in(it, allocator))
4543            }
4544            Self::JSXFragment(it) => {
4545                ExportDefaultDeclarationKind::JSXFragment(CloneIn::clone_in(it, allocator))
4546            }
4547            Self::TSAsExpression(it) => {
4548                ExportDefaultDeclarationKind::TSAsExpression(CloneIn::clone_in(it, allocator))
4549            }
4550            Self::TSSatisfiesExpression(it) => ExportDefaultDeclarationKind::TSSatisfiesExpression(
4551                CloneIn::clone_in(it, allocator),
4552            ),
4553            Self::TSTypeAssertion(it) => {
4554                ExportDefaultDeclarationKind::TSTypeAssertion(CloneIn::clone_in(it, allocator))
4555            }
4556            Self::TSNonNullExpression(it) => {
4557                ExportDefaultDeclarationKind::TSNonNullExpression(CloneIn::clone_in(it, allocator))
4558            }
4559            Self::TSInstantiationExpression(it) => {
4560                ExportDefaultDeclarationKind::TSInstantiationExpression(CloneIn::clone_in(
4561                    it, allocator,
4562                ))
4563            }
4564            Self::V8IntrinsicExpression(it) => ExportDefaultDeclarationKind::V8IntrinsicExpression(
4565                CloneIn::clone_in(it, allocator),
4566            ),
4567            Self::ComputedMemberExpression(it) => {
4568                ExportDefaultDeclarationKind::ComputedMemberExpression(CloneIn::clone_in(
4569                    it, allocator,
4570                ))
4571            }
4572            Self::StaticMemberExpression(it) => {
4573                ExportDefaultDeclarationKind::StaticMemberExpression(CloneIn::clone_in(
4574                    it, allocator,
4575                ))
4576            }
4577            Self::PrivateFieldExpression(it) => {
4578                ExportDefaultDeclarationKind::PrivateFieldExpression(CloneIn::clone_in(
4579                    it, allocator,
4580                ))
4581            }
4582        }
4583    }
4584
4585    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4586        match self {
4587            Self::FunctionDeclaration(it) => ExportDefaultDeclarationKind::FunctionDeclaration(
4588                CloneIn::clone_in_with_semantic_ids(it, allocator),
4589            ),
4590            Self::ClassDeclaration(it) => ExportDefaultDeclarationKind::ClassDeclaration(
4591                CloneIn::clone_in_with_semantic_ids(it, allocator),
4592            ),
4593            Self::TSInterfaceDeclaration(it) => {
4594                ExportDefaultDeclarationKind::TSInterfaceDeclaration(
4595                    CloneIn::clone_in_with_semantic_ids(it, allocator),
4596                )
4597            }
4598            Self::BooleanLiteral(it) => ExportDefaultDeclarationKind::BooleanLiteral(
4599                CloneIn::clone_in_with_semantic_ids(it, allocator),
4600            ),
4601            Self::NullLiteral(it) => ExportDefaultDeclarationKind::NullLiteral(
4602                CloneIn::clone_in_with_semantic_ids(it, allocator),
4603            ),
4604            Self::NumericLiteral(it) => ExportDefaultDeclarationKind::NumericLiteral(
4605                CloneIn::clone_in_with_semantic_ids(it, allocator),
4606            ),
4607            Self::BigIntLiteral(it) => ExportDefaultDeclarationKind::BigIntLiteral(
4608                CloneIn::clone_in_with_semantic_ids(it, allocator),
4609            ),
4610            Self::RegExpLiteral(it) => ExportDefaultDeclarationKind::RegExpLiteral(
4611                CloneIn::clone_in_with_semantic_ids(it, allocator),
4612            ),
4613            Self::StringLiteral(it) => ExportDefaultDeclarationKind::StringLiteral(
4614                CloneIn::clone_in_with_semantic_ids(it, allocator),
4615            ),
4616            Self::TemplateLiteral(it) => ExportDefaultDeclarationKind::TemplateLiteral(
4617                CloneIn::clone_in_with_semantic_ids(it, allocator),
4618            ),
4619            Self::Identifier(it) => ExportDefaultDeclarationKind::Identifier(
4620                CloneIn::clone_in_with_semantic_ids(it, allocator),
4621            ),
4622            Self::MetaProperty(it) => ExportDefaultDeclarationKind::MetaProperty(
4623                CloneIn::clone_in_with_semantic_ids(it, allocator),
4624            ),
4625            Self::Super(it) => ExportDefaultDeclarationKind::Super(
4626                CloneIn::clone_in_with_semantic_ids(it, allocator),
4627            ),
4628            Self::ArrayExpression(it) => ExportDefaultDeclarationKind::ArrayExpression(
4629                CloneIn::clone_in_with_semantic_ids(it, allocator),
4630            ),
4631            Self::ArrowFunctionExpression(it) => {
4632                ExportDefaultDeclarationKind::ArrowFunctionExpression(
4633                    CloneIn::clone_in_with_semantic_ids(it, allocator),
4634                )
4635            }
4636            Self::AssignmentExpression(it) => ExportDefaultDeclarationKind::AssignmentExpression(
4637                CloneIn::clone_in_with_semantic_ids(it, allocator),
4638            ),
4639            Self::AwaitExpression(it) => ExportDefaultDeclarationKind::AwaitExpression(
4640                CloneIn::clone_in_with_semantic_ids(it, allocator),
4641            ),
4642            Self::BinaryExpression(it) => ExportDefaultDeclarationKind::BinaryExpression(
4643                CloneIn::clone_in_with_semantic_ids(it, allocator),
4644            ),
4645            Self::CallExpression(it) => ExportDefaultDeclarationKind::CallExpression(
4646                CloneIn::clone_in_with_semantic_ids(it, allocator),
4647            ),
4648            Self::ChainExpression(it) => ExportDefaultDeclarationKind::ChainExpression(
4649                CloneIn::clone_in_with_semantic_ids(it, allocator),
4650            ),
4651            Self::ClassExpression(it) => ExportDefaultDeclarationKind::ClassExpression(
4652                CloneIn::clone_in_with_semantic_ids(it, allocator),
4653            ),
4654            Self::ConditionalExpression(it) => ExportDefaultDeclarationKind::ConditionalExpression(
4655                CloneIn::clone_in_with_semantic_ids(it, allocator),
4656            ),
4657            Self::FunctionExpression(it) => ExportDefaultDeclarationKind::FunctionExpression(
4658                CloneIn::clone_in_with_semantic_ids(it, allocator),
4659            ),
4660            Self::ImportExpression(it) => ExportDefaultDeclarationKind::ImportExpression(
4661                CloneIn::clone_in_with_semantic_ids(it, allocator),
4662            ),
4663            Self::LogicalExpression(it) => ExportDefaultDeclarationKind::LogicalExpression(
4664                CloneIn::clone_in_with_semantic_ids(it, allocator),
4665            ),
4666            Self::NewExpression(it) => ExportDefaultDeclarationKind::NewExpression(
4667                CloneIn::clone_in_with_semantic_ids(it, allocator),
4668            ),
4669            Self::ObjectExpression(it) => ExportDefaultDeclarationKind::ObjectExpression(
4670                CloneIn::clone_in_with_semantic_ids(it, allocator),
4671            ),
4672            Self::ParenthesizedExpression(it) => {
4673                ExportDefaultDeclarationKind::ParenthesizedExpression(
4674                    CloneIn::clone_in_with_semantic_ids(it, allocator),
4675                )
4676            }
4677            Self::SequenceExpression(it) => ExportDefaultDeclarationKind::SequenceExpression(
4678                CloneIn::clone_in_with_semantic_ids(it, allocator),
4679            ),
4680            Self::TaggedTemplateExpression(it) => {
4681                ExportDefaultDeclarationKind::TaggedTemplateExpression(
4682                    CloneIn::clone_in_with_semantic_ids(it, allocator),
4683                )
4684            }
4685            Self::ThisExpression(it) => ExportDefaultDeclarationKind::ThisExpression(
4686                CloneIn::clone_in_with_semantic_ids(it, allocator),
4687            ),
4688            Self::UnaryExpression(it) => ExportDefaultDeclarationKind::UnaryExpression(
4689                CloneIn::clone_in_with_semantic_ids(it, allocator),
4690            ),
4691            Self::UpdateExpression(it) => ExportDefaultDeclarationKind::UpdateExpression(
4692                CloneIn::clone_in_with_semantic_ids(it, allocator),
4693            ),
4694            Self::YieldExpression(it) => ExportDefaultDeclarationKind::YieldExpression(
4695                CloneIn::clone_in_with_semantic_ids(it, allocator),
4696            ),
4697            Self::PrivateInExpression(it) => ExportDefaultDeclarationKind::PrivateInExpression(
4698                CloneIn::clone_in_with_semantic_ids(it, allocator),
4699            ),
4700            Self::JSXElement(it) => ExportDefaultDeclarationKind::JSXElement(
4701                CloneIn::clone_in_with_semantic_ids(it, allocator),
4702            ),
4703            Self::JSXFragment(it) => ExportDefaultDeclarationKind::JSXFragment(
4704                CloneIn::clone_in_with_semantic_ids(it, allocator),
4705            ),
4706            Self::TSAsExpression(it) => ExportDefaultDeclarationKind::TSAsExpression(
4707                CloneIn::clone_in_with_semantic_ids(it, allocator),
4708            ),
4709            Self::TSSatisfiesExpression(it) => ExportDefaultDeclarationKind::TSSatisfiesExpression(
4710                CloneIn::clone_in_with_semantic_ids(it, allocator),
4711            ),
4712            Self::TSTypeAssertion(it) => ExportDefaultDeclarationKind::TSTypeAssertion(
4713                CloneIn::clone_in_with_semantic_ids(it, allocator),
4714            ),
4715            Self::TSNonNullExpression(it) => ExportDefaultDeclarationKind::TSNonNullExpression(
4716                CloneIn::clone_in_with_semantic_ids(it, allocator),
4717            ),
4718            Self::TSInstantiationExpression(it) => {
4719                ExportDefaultDeclarationKind::TSInstantiationExpression(
4720                    CloneIn::clone_in_with_semantic_ids(it, allocator),
4721                )
4722            }
4723            Self::V8IntrinsicExpression(it) => ExportDefaultDeclarationKind::V8IntrinsicExpression(
4724                CloneIn::clone_in_with_semantic_ids(it, allocator),
4725            ),
4726            Self::ComputedMemberExpression(it) => {
4727                ExportDefaultDeclarationKind::ComputedMemberExpression(
4728                    CloneIn::clone_in_with_semantic_ids(it, allocator),
4729                )
4730            }
4731            Self::StaticMemberExpression(it) => {
4732                ExportDefaultDeclarationKind::StaticMemberExpression(
4733                    CloneIn::clone_in_with_semantic_ids(it, allocator),
4734                )
4735            }
4736            Self::PrivateFieldExpression(it) => {
4737                ExportDefaultDeclarationKind::PrivateFieldExpression(
4738                    CloneIn::clone_in_with_semantic_ids(it, allocator),
4739                )
4740            }
4741        }
4742    }
4743}
4744
4745impl<'new_alloc> CloneIn<'new_alloc> for ModuleExportName<'_> {
4746    type Cloned = ModuleExportName<'new_alloc>;
4747
4748    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4749        match self {
4750            Self::IdentifierName(it) => {
4751                ModuleExportName::IdentifierName(CloneIn::clone_in(it, allocator))
4752            }
4753            Self::IdentifierReference(it) => {
4754                ModuleExportName::IdentifierReference(CloneIn::clone_in(it, allocator))
4755            }
4756            Self::StringLiteral(it) => {
4757                ModuleExportName::StringLiteral(CloneIn::clone_in(it, allocator))
4758            }
4759        }
4760    }
4761
4762    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4763        match self {
4764            Self::IdentifierName(it) => {
4765                ModuleExportName::IdentifierName(CloneIn::clone_in_with_semantic_ids(it, allocator))
4766            }
4767            Self::IdentifierReference(it) => ModuleExportName::IdentifierReference(
4768                CloneIn::clone_in_with_semantic_ids(it, allocator),
4769            ),
4770            Self::StringLiteral(it) => {
4771                ModuleExportName::StringLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
4772            }
4773        }
4774    }
4775}
4776
4777impl<'new_alloc> CloneIn<'new_alloc> for V8IntrinsicExpression<'_> {
4778    type Cloned = V8IntrinsicExpression<'new_alloc>;
4779
4780    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4781        V8IntrinsicExpression {
4782            span: CloneIn::clone_in(&self.span, allocator),
4783            name: CloneIn::clone_in(&self.name, allocator),
4784            arguments: CloneIn::clone_in(&self.arguments, allocator),
4785        }
4786    }
4787
4788    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4789        V8IntrinsicExpression {
4790            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4791            name: CloneIn::clone_in_with_semantic_ids(&self.name, allocator),
4792            arguments: CloneIn::clone_in_with_semantic_ids(&self.arguments, allocator),
4793        }
4794    }
4795}
4796
4797impl<'new_alloc> CloneIn<'new_alloc> for BooleanLiteral {
4798    type Cloned = BooleanLiteral;
4799
4800    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4801        BooleanLiteral {
4802            span: CloneIn::clone_in(&self.span, allocator),
4803            value: CloneIn::clone_in(&self.value, allocator),
4804        }
4805    }
4806
4807    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4808        BooleanLiteral {
4809            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4810            value: CloneIn::clone_in_with_semantic_ids(&self.value, allocator),
4811        }
4812    }
4813}
4814
4815impl<'new_alloc> CloneIn<'new_alloc> for NullLiteral {
4816    type Cloned = NullLiteral;
4817
4818    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4819        NullLiteral { span: CloneIn::clone_in(&self.span, allocator) }
4820    }
4821
4822    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4823        NullLiteral { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
4824    }
4825}
4826
4827impl<'new_alloc> CloneIn<'new_alloc> for NumericLiteral<'_> {
4828    type Cloned = NumericLiteral<'new_alloc>;
4829
4830    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4831        NumericLiteral {
4832            span: CloneIn::clone_in(&self.span, allocator),
4833            value: CloneIn::clone_in(&self.value, allocator),
4834            raw: CloneIn::clone_in(&self.raw, allocator),
4835            base: CloneIn::clone_in(&self.base, allocator),
4836        }
4837    }
4838
4839    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4840        NumericLiteral {
4841            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4842            value: CloneIn::clone_in_with_semantic_ids(&self.value, allocator),
4843            raw: CloneIn::clone_in_with_semantic_ids(&self.raw, allocator),
4844            base: CloneIn::clone_in_with_semantic_ids(&self.base, allocator),
4845        }
4846    }
4847}
4848
4849impl<'new_alloc> CloneIn<'new_alloc> for StringLiteral<'_> {
4850    type Cloned = StringLiteral<'new_alloc>;
4851
4852    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4853        StringLiteral {
4854            span: CloneIn::clone_in(&self.span, allocator),
4855            value: CloneIn::clone_in(&self.value, allocator),
4856            raw: CloneIn::clone_in(&self.raw, allocator),
4857            lone_surrogates: CloneIn::clone_in(&self.lone_surrogates, allocator),
4858        }
4859    }
4860
4861    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4862        StringLiteral {
4863            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4864            value: CloneIn::clone_in_with_semantic_ids(&self.value, allocator),
4865            raw: CloneIn::clone_in_with_semantic_ids(&self.raw, allocator),
4866            lone_surrogates: CloneIn::clone_in_with_semantic_ids(&self.lone_surrogates, allocator),
4867        }
4868    }
4869}
4870
4871impl<'new_alloc> CloneIn<'new_alloc> for BigIntLiteral<'_> {
4872    type Cloned = BigIntLiteral<'new_alloc>;
4873
4874    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4875        BigIntLiteral {
4876            span: CloneIn::clone_in(&self.span, allocator),
4877            value: CloneIn::clone_in(&self.value, allocator),
4878            raw: CloneIn::clone_in(&self.raw, allocator),
4879            base: CloneIn::clone_in(&self.base, allocator),
4880        }
4881    }
4882
4883    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4884        BigIntLiteral {
4885            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4886            value: CloneIn::clone_in_with_semantic_ids(&self.value, allocator),
4887            raw: CloneIn::clone_in_with_semantic_ids(&self.raw, allocator),
4888            base: CloneIn::clone_in_with_semantic_ids(&self.base, allocator),
4889        }
4890    }
4891}
4892
4893impl<'new_alloc> CloneIn<'new_alloc> for RegExpLiteral<'_> {
4894    type Cloned = RegExpLiteral<'new_alloc>;
4895
4896    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4897        RegExpLiteral {
4898            span: CloneIn::clone_in(&self.span, allocator),
4899            regex: CloneIn::clone_in(&self.regex, allocator),
4900            raw: CloneIn::clone_in(&self.raw, allocator),
4901        }
4902    }
4903
4904    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4905        RegExpLiteral {
4906            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4907            regex: CloneIn::clone_in_with_semantic_ids(&self.regex, allocator),
4908            raw: CloneIn::clone_in_with_semantic_ids(&self.raw, allocator),
4909        }
4910    }
4911}
4912
4913impl<'new_alloc> CloneIn<'new_alloc> for RegExp<'_> {
4914    type Cloned = RegExp<'new_alloc>;
4915
4916    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4917        RegExp {
4918            pattern: CloneIn::clone_in(&self.pattern, allocator),
4919            flags: CloneIn::clone_in(&self.flags, allocator),
4920        }
4921    }
4922
4923    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4924        RegExp {
4925            pattern: CloneIn::clone_in_with_semantic_ids(&self.pattern, allocator),
4926            flags: CloneIn::clone_in_with_semantic_ids(&self.flags, allocator),
4927        }
4928    }
4929}
4930
4931impl<'new_alloc> CloneIn<'new_alloc> for RegExpPattern<'_> {
4932    type Cloned = RegExpPattern<'new_alloc>;
4933
4934    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4935        RegExpPattern {
4936            text: CloneIn::clone_in(&self.text, allocator),
4937            pattern: CloneIn::clone_in(&self.pattern, allocator),
4938        }
4939    }
4940
4941    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4942        RegExpPattern {
4943            text: CloneIn::clone_in_with_semantic_ids(&self.text, allocator),
4944            pattern: CloneIn::clone_in_with_semantic_ids(&self.pattern, allocator),
4945        }
4946    }
4947}
4948
4949impl<'new_alloc> CloneIn<'new_alloc> for JSXElement<'_> {
4950    type Cloned = JSXElement<'new_alloc>;
4951
4952    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4953        JSXElement {
4954            span: CloneIn::clone_in(&self.span, allocator),
4955            opening_element: CloneIn::clone_in(&self.opening_element, allocator),
4956            children: CloneIn::clone_in(&self.children, allocator),
4957            closing_element: CloneIn::clone_in(&self.closing_element, allocator),
4958        }
4959    }
4960
4961    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4962        JSXElement {
4963            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4964            opening_element: CloneIn::clone_in_with_semantic_ids(&self.opening_element, allocator),
4965            children: CloneIn::clone_in_with_semantic_ids(&self.children, allocator),
4966            closing_element: CloneIn::clone_in_with_semantic_ids(&self.closing_element, allocator),
4967        }
4968    }
4969}
4970
4971impl<'new_alloc> CloneIn<'new_alloc> for JSXOpeningElement<'_> {
4972    type Cloned = JSXOpeningElement<'new_alloc>;
4973
4974    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4975        JSXOpeningElement {
4976            span: CloneIn::clone_in(&self.span, allocator),
4977            name: CloneIn::clone_in(&self.name, allocator),
4978            type_arguments: CloneIn::clone_in(&self.type_arguments, allocator),
4979            attributes: CloneIn::clone_in(&self.attributes, allocator),
4980        }
4981    }
4982
4983    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4984        JSXOpeningElement {
4985            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
4986            name: CloneIn::clone_in_with_semantic_ids(&self.name, allocator),
4987            type_arguments: CloneIn::clone_in_with_semantic_ids(&self.type_arguments, allocator),
4988            attributes: CloneIn::clone_in_with_semantic_ids(&self.attributes, allocator),
4989        }
4990    }
4991}
4992
4993impl<'new_alloc> CloneIn<'new_alloc> for JSXClosingElement<'_> {
4994    type Cloned = JSXClosingElement<'new_alloc>;
4995
4996    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
4997        JSXClosingElement {
4998            span: CloneIn::clone_in(&self.span, allocator),
4999            name: CloneIn::clone_in(&self.name, allocator),
5000        }
5001    }
5002
5003    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5004        JSXClosingElement {
5005            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5006            name: CloneIn::clone_in_with_semantic_ids(&self.name, allocator),
5007        }
5008    }
5009}
5010
5011impl<'new_alloc> CloneIn<'new_alloc> for JSXFragment<'_> {
5012    type Cloned = JSXFragment<'new_alloc>;
5013
5014    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5015        JSXFragment {
5016            span: CloneIn::clone_in(&self.span, allocator),
5017            opening_fragment: CloneIn::clone_in(&self.opening_fragment, allocator),
5018            children: CloneIn::clone_in(&self.children, allocator),
5019            closing_fragment: CloneIn::clone_in(&self.closing_fragment, allocator),
5020        }
5021    }
5022
5023    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5024        JSXFragment {
5025            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5026            opening_fragment: CloneIn::clone_in_with_semantic_ids(
5027                &self.opening_fragment,
5028                allocator,
5029            ),
5030            children: CloneIn::clone_in_with_semantic_ids(&self.children, allocator),
5031            closing_fragment: CloneIn::clone_in_with_semantic_ids(
5032                &self.closing_fragment,
5033                allocator,
5034            ),
5035        }
5036    }
5037}
5038
5039impl<'new_alloc> CloneIn<'new_alloc> for JSXOpeningFragment {
5040    type Cloned = JSXOpeningFragment;
5041
5042    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5043        JSXOpeningFragment { span: CloneIn::clone_in(&self.span, allocator) }
5044    }
5045
5046    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5047        JSXOpeningFragment { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
5048    }
5049}
5050
5051impl<'new_alloc> CloneIn<'new_alloc> for JSXClosingFragment {
5052    type Cloned = JSXClosingFragment;
5053
5054    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5055        JSXClosingFragment { span: CloneIn::clone_in(&self.span, allocator) }
5056    }
5057
5058    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5059        JSXClosingFragment { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
5060    }
5061}
5062
5063impl<'new_alloc> CloneIn<'new_alloc> for JSXElementName<'_> {
5064    type Cloned = JSXElementName<'new_alloc>;
5065
5066    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5067        match self {
5068            Self::Identifier(it) => JSXElementName::Identifier(CloneIn::clone_in(it, allocator)),
5069            Self::IdentifierReference(it) => {
5070                JSXElementName::IdentifierReference(CloneIn::clone_in(it, allocator))
5071            }
5072            Self::NamespacedName(it) => {
5073                JSXElementName::NamespacedName(CloneIn::clone_in(it, allocator))
5074            }
5075            Self::MemberExpression(it) => {
5076                JSXElementName::MemberExpression(CloneIn::clone_in(it, allocator))
5077            }
5078            Self::ThisExpression(it) => {
5079                JSXElementName::ThisExpression(CloneIn::clone_in(it, allocator))
5080            }
5081        }
5082    }
5083
5084    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5085        match self {
5086            Self::Identifier(it) => {
5087                JSXElementName::Identifier(CloneIn::clone_in_with_semantic_ids(it, allocator))
5088            }
5089            Self::IdentifierReference(it) => JSXElementName::IdentifierReference(
5090                CloneIn::clone_in_with_semantic_ids(it, allocator),
5091            ),
5092            Self::NamespacedName(it) => {
5093                JSXElementName::NamespacedName(CloneIn::clone_in_with_semantic_ids(it, allocator))
5094            }
5095            Self::MemberExpression(it) => {
5096                JSXElementName::MemberExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5097            }
5098            Self::ThisExpression(it) => {
5099                JSXElementName::ThisExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5100            }
5101        }
5102    }
5103}
5104
5105impl<'new_alloc> CloneIn<'new_alloc> for JSXNamespacedName<'_> {
5106    type Cloned = JSXNamespacedName<'new_alloc>;
5107
5108    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5109        JSXNamespacedName {
5110            span: CloneIn::clone_in(&self.span, allocator),
5111            namespace: CloneIn::clone_in(&self.namespace, allocator),
5112            name: CloneIn::clone_in(&self.name, allocator),
5113        }
5114    }
5115
5116    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5117        JSXNamespacedName {
5118            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5119            namespace: CloneIn::clone_in_with_semantic_ids(&self.namespace, allocator),
5120            name: CloneIn::clone_in_with_semantic_ids(&self.name, allocator),
5121        }
5122    }
5123}
5124
5125impl<'new_alloc> CloneIn<'new_alloc> for JSXMemberExpression<'_> {
5126    type Cloned = JSXMemberExpression<'new_alloc>;
5127
5128    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5129        JSXMemberExpression {
5130            span: CloneIn::clone_in(&self.span, allocator),
5131            object: CloneIn::clone_in(&self.object, allocator),
5132            property: CloneIn::clone_in(&self.property, allocator),
5133        }
5134    }
5135
5136    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5137        JSXMemberExpression {
5138            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5139            object: CloneIn::clone_in_with_semantic_ids(&self.object, allocator),
5140            property: CloneIn::clone_in_with_semantic_ids(&self.property, allocator),
5141        }
5142    }
5143}
5144
5145impl<'new_alloc> CloneIn<'new_alloc> for JSXMemberExpressionObject<'_> {
5146    type Cloned = JSXMemberExpressionObject<'new_alloc>;
5147
5148    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5149        match self {
5150            Self::IdentifierReference(it) => {
5151                JSXMemberExpressionObject::IdentifierReference(CloneIn::clone_in(it, allocator))
5152            }
5153            Self::MemberExpression(it) => {
5154                JSXMemberExpressionObject::MemberExpression(CloneIn::clone_in(it, allocator))
5155            }
5156            Self::ThisExpression(it) => {
5157                JSXMemberExpressionObject::ThisExpression(CloneIn::clone_in(it, allocator))
5158            }
5159        }
5160    }
5161
5162    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5163        match self {
5164            Self::IdentifierReference(it) => JSXMemberExpressionObject::IdentifierReference(
5165                CloneIn::clone_in_with_semantic_ids(it, allocator),
5166            ),
5167            Self::MemberExpression(it) => JSXMemberExpressionObject::MemberExpression(
5168                CloneIn::clone_in_with_semantic_ids(it, allocator),
5169            ),
5170            Self::ThisExpression(it) => JSXMemberExpressionObject::ThisExpression(
5171                CloneIn::clone_in_with_semantic_ids(it, allocator),
5172            ),
5173        }
5174    }
5175}
5176
5177impl<'new_alloc> CloneIn<'new_alloc> for JSXExpressionContainer<'_> {
5178    type Cloned = JSXExpressionContainer<'new_alloc>;
5179
5180    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5181        JSXExpressionContainer {
5182            span: CloneIn::clone_in(&self.span, allocator),
5183            expression: CloneIn::clone_in(&self.expression, allocator),
5184        }
5185    }
5186
5187    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5188        JSXExpressionContainer {
5189            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5190            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
5191        }
5192    }
5193}
5194
5195impl<'new_alloc> CloneIn<'new_alloc> for JSXExpression<'_> {
5196    type Cloned = JSXExpression<'new_alloc>;
5197
5198    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5199        match self {
5200            Self::EmptyExpression(it) => {
5201                JSXExpression::EmptyExpression(CloneIn::clone_in(it, allocator))
5202            }
5203            Self::BooleanLiteral(it) => {
5204                JSXExpression::BooleanLiteral(CloneIn::clone_in(it, allocator))
5205            }
5206            Self::NullLiteral(it) => JSXExpression::NullLiteral(CloneIn::clone_in(it, allocator)),
5207            Self::NumericLiteral(it) => {
5208                JSXExpression::NumericLiteral(CloneIn::clone_in(it, allocator))
5209            }
5210            Self::BigIntLiteral(it) => {
5211                JSXExpression::BigIntLiteral(CloneIn::clone_in(it, allocator))
5212            }
5213            Self::RegExpLiteral(it) => {
5214                JSXExpression::RegExpLiteral(CloneIn::clone_in(it, allocator))
5215            }
5216            Self::StringLiteral(it) => {
5217                JSXExpression::StringLiteral(CloneIn::clone_in(it, allocator))
5218            }
5219            Self::TemplateLiteral(it) => {
5220                JSXExpression::TemplateLiteral(CloneIn::clone_in(it, allocator))
5221            }
5222            Self::Identifier(it) => JSXExpression::Identifier(CloneIn::clone_in(it, allocator)),
5223            Self::MetaProperty(it) => JSXExpression::MetaProperty(CloneIn::clone_in(it, allocator)),
5224            Self::Super(it) => JSXExpression::Super(CloneIn::clone_in(it, allocator)),
5225            Self::ArrayExpression(it) => {
5226                JSXExpression::ArrayExpression(CloneIn::clone_in(it, allocator))
5227            }
5228            Self::ArrowFunctionExpression(it) => {
5229                JSXExpression::ArrowFunctionExpression(CloneIn::clone_in(it, allocator))
5230            }
5231            Self::AssignmentExpression(it) => {
5232                JSXExpression::AssignmentExpression(CloneIn::clone_in(it, allocator))
5233            }
5234            Self::AwaitExpression(it) => {
5235                JSXExpression::AwaitExpression(CloneIn::clone_in(it, allocator))
5236            }
5237            Self::BinaryExpression(it) => {
5238                JSXExpression::BinaryExpression(CloneIn::clone_in(it, allocator))
5239            }
5240            Self::CallExpression(it) => {
5241                JSXExpression::CallExpression(CloneIn::clone_in(it, allocator))
5242            }
5243            Self::ChainExpression(it) => {
5244                JSXExpression::ChainExpression(CloneIn::clone_in(it, allocator))
5245            }
5246            Self::ClassExpression(it) => {
5247                JSXExpression::ClassExpression(CloneIn::clone_in(it, allocator))
5248            }
5249            Self::ConditionalExpression(it) => {
5250                JSXExpression::ConditionalExpression(CloneIn::clone_in(it, allocator))
5251            }
5252            Self::FunctionExpression(it) => {
5253                JSXExpression::FunctionExpression(CloneIn::clone_in(it, allocator))
5254            }
5255            Self::ImportExpression(it) => {
5256                JSXExpression::ImportExpression(CloneIn::clone_in(it, allocator))
5257            }
5258            Self::LogicalExpression(it) => {
5259                JSXExpression::LogicalExpression(CloneIn::clone_in(it, allocator))
5260            }
5261            Self::NewExpression(it) => {
5262                JSXExpression::NewExpression(CloneIn::clone_in(it, allocator))
5263            }
5264            Self::ObjectExpression(it) => {
5265                JSXExpression::ObjectExpression(CloneIn::clone_in(it, allocator))
5266            }
5267            Self::ParenthesizedExpression(it) => {
5268                JSXExpression::ParenthesizedExpression(CloneIn::clone_in(it, allocator))
5269            }
5270            Self::SequenceExpression(it) => {
5271                JSXExpression::SequenceExpression(CloneIn::clone_in(it, allocator))
5272            }
5273            Self::TaggedTemplateExpression(it) => {
5274                JSXExpression::TaggedTemplateExpression(CloneIn::clone_in(it, allocator))
5275            }
5276            Self::ThisExpression(it) => {
5277                JSXExpression::ThisExpression(CloneIn::clone_in(it, allocator))
5278            }
5279            Self::UnaryExpression(it) => {
5280                JSXExpression::UnaryExpression(CloneIn::clone_in(it, allocator))
5281            }
5282            Self::UpdateExpression(it) => {
5283                JSXExpression::UpdateExpression(CloneIn::clone_in(it, allocator))
5284            }
5285            Self::YieldExpression(it) => {
5286                JSXExpression::YieldExpression(CloneIn::clone_in(it, allocator))
5287            }
5288            Self::PrivateInExpression(it) => {
5289                JSXExpression::PrivateInExpression(CloneIn::clone_in(it, allocator))
5290            }
5291            Self::JSXElement(it) => JSXExpression::JSXElement(CloneIn::clone_in(it, allocator)),
5292            Self::JSXFragment(it) => JSXExpression::JSXFragment(CloneIn::clone_in(it, allocator)),
5293            Self::TSAsExpression(it) => {
5294                JSXExpression::TSAsExpression(CloneIn::clone_in(it, allocator))
5295            }
5296            Self::TSSatisfiesExpression(it) => {
5297                JSXExpression::TSSatisfiesExpression(CloneIn::clone_in(it, allocator))
5298            }
5299            Self::TSTypeAssertion(it) => {
5300                JSXExpression::TSTypeAssertion(CloneIn::clone_in(it, allocator))
5301            }
5302            Self::TSNonNullExpression(it) => {
5303                JSXExpression::TSNonNullExpression(CloneIn::clone_in(it, allocator))
5304            }
5305            Self::TSInstantiationExpression(it) => {
5306                JSXExpression::TSInstantiationExpression(CloneIn::clone_in(it, allocator))
5307            }
5308            Self::V8IntrinsicExpression(it) => {
5309                JSXExpression::V8IntrinsicExpression(CloneIn::clone_in(it, allocator))
5310            }
5311            Self::ComputedMemberExpression(it) => {
5312                JSXExpression::ComputedMemberExpression(CloneIn::clone_in(it, allocator))
5313            }
5314            Self::StaticMemberExpression(it) => {
5315                JSXExpression::StaticMemberExpression(CloneIn::clone_in(it, allocator))
5316            }
5317            Self::PrivateFieldExpression(it) => {
5318                JSXExpression::PrivateFieldExpression(CloneIn::clone_in(it, allocator))
5319            }
5320        }
5321    }
5322
5323    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5324        match self {
5325            Self::EmptyExpression(it) => {
5326                JSXExpression::EmptyExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5327            }
5328            Self::BooleanLiteral(it) => {
5329                JSXExpression::BooleanLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
5330            }
5331            Self::NullLiteral(it) => {
5332                JSXExpression::NullLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
5333            }
5334            Self::NumericLiteral(it) => {
5335                JSXExpression::NumericLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
5336            }
5337            Self::BigIntLiteral(it) => {
5338                JSXExpression::BigIntLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
5339            }
5340            Self::RegExpLiteral(it) => {
5341                JSXExpression::RegExpLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
5342            }
5343            Self::StringLiteral(it) => {
5344                JSXExpression::StringLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
5345            }
5346            Self::TemplateLiteral(it) => {
5347                JSXExpression::TemplateLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
5348            }
5349            Self::Identifier(it) => {
5350                JSXExpression::Identifier(CloneIn::clone_in_with_semantic_ids(it, allocator))
5351            }
5352            Self::MetaProperty(it) => {
5353                JSXExpression::MetaProperty(CloneIn::clone_in_with_semantic_ids(it, allocator))
5354            }
5355            Self::Super(it) => {
5356                JSXExpression::Super(CloneIn::clone_in_with_semantic_ids(it, allocator))
5357            }
5358            Self::ArrayExpression(it) => {
5359                JSXExpression::ArrayExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5360            }
5361            Self::ArrowFunctionExpression(it) => JSXExpression::ArrowFunctionExpression(
5362                CloneIn::clone_in_with_semantic_ids(it, allocator),
5363            ),
5364            Self::AssignmentExpression(it) => JSXExpression::AssignmentExpression(
5365                CloneIn::clone_in_with_semantic_ids(it, allocator),
5366            ),
5367            Self::AwaitExpression(it) => {
5368                JSXExpression::AwaitExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5369            }
5370            Self::BinaryExpression(it) => {
5371                JSXExpression::BinaryExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5372            }
5373            Self::CallExpression(it) => {
5374                JSXExpression::CallExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5375            }
5376            Self::ChainExpression(it) => {
5377                JSXExpression::ChainExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5378            }
5379            Self::ClassExpression(it) => {
5380                JSXExpression::ClassExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5381            }
5382            Self::ConditionalExpression(it) => JSXExpression::ConditionalExpression(
5383                CloneIn::clone_in_with_semantic_ids(it, allocator),
5384            ),
5385            Self::FunctionExpression(it) => JSXExpression::FunctionExpression(
5386                CloneIn::clone_in_with_semantic_ids(it, allocator),
5387            ),
5388            Self::ImportExpression(it) => {
5389                JSXExpression::ImportExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5390            }
5391            Self::LogicalExpression(it) => {
5392                JSXExpression::LogicalExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5393            }
5394            Self::NewExpression(it) => {
5395                JSXExpression::NewExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5396            }
5397            Self::ObjectExpression(it) => {
5398                JSXExpression::ObjectExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5399            }
5400            Self::ParenthesizedExpression(it) => JSXExpression::ParenthesizedExpression(
5401                CloneIn::clone_in_with_semantic_ids(it, allocator),
5402            ),
5403            Self::SequenceExpression(it) => JSXExpression::SequenceExpression(
5404                CloneIn::clone_in_with_semantic_ids(it, allocator),
5405            ),
5406            Self::TaggedTemplateExpression(it) => JSXExpression::TaggedTemplateExpression(
5407                CloneIn::clone_in_with_semantic_ids(it, allocator),
5408            ),
5409            Self::ThisExpression(it) => {
5410                JSXExpression::ThisExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5411            }
5412            Self::UnaryExpression(it) => {
5413                JSXExpression::UnaryExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5414            }
5415            Self::UpdateExpression(it) => {
5416                JSXExpression::UpdateExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5417            }
5418            Self::YieldExpression(it) => {
5419                JSXExpression::YieldExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5420            }
5421            Self::PrivateInExpression(it) => JSXExpression::PrivateInExpression(
5422                CloneIn::clone_in_with_semantic_ids(it, allocator),
5423            ),
5424            Self::JSXElement(it) => {
5425                JSXExpression::JSXElement(CloneIn::clone_in_with_semantic_ids(it, allocator))
5426            }
5427            Self::JSXFragment(it) => {
5428                JSXExpression::JSXFragment(CloneIn::clone_in_with_semantic_ids(it, allocator))
5429            }
5430            Self::TSAsExpression(it) => {
5431                JSXExpression::TSAsExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5432            }
5433            Self::TSSatisfiesExpression(it) => JSXExpression::TSSatisfiesExpression(
5434                CloneIn::clone_in_with_semantic_ids(it, allocator),
5435            ),
5436            Self::TSTypeAssertion(it) => {
5437                JSXExpression::TSTypeAssertion(CloneIn::clone_in_with_semantic_ids(it, allocator))
5438            }
5439            Self::TSNonNullExpression(it) => JSXExpression::TSNonNullExpression(
5440                CloneIn::clone_in_with_semantic_ids(it, allocator),
5441            ),
5442            Self::TSInstantiationExpression(it) => JSXExpression::TSInstantiationExpression(
5443                CloneIn::clone_in_with_semantic_ids(it, allocator),
5444            ),
5445            Self::V8IntrinsicExpression(it) => JSXExpression::V8IntrinsicExpression(
5446                CloneIn::clone_in_with_semantic_ids(it, allocator),
5447            ),
5448            Self::ComputedMemberExpression(it) => JSXExpression::ComputedMemberExpression(
5449                CloneIn::clone_in_with_semantic_ids(it, allocator),
5450            ),
5451            Self::StaticMemberExpression(it) => JSXExpression::StaticMemberExpression(
5452                CloneIn::clone_in_with_semantic_ids(it, allocator),
5453            ),
5454            Self::PrivateFieldExpression(it) => JSXExpression::PrivateFieldExpression(
5455                CloneIn::clone_in_with_semantic_ids(it, allocator),
5456            ),
5457        }
5458    }
5459}
5460
5461impl<'new_alloc> CloneIn<'new_alloc> for JSXEmptyExpression {
5462    type Cloned = JSXEmptyExpression;
5463
5464    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5465        JSXEmptyExpression { span: CloneIn::clone_in(&self.span, allocator) }
5466    }
5467
5468    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5469        JSXEmptyExpression { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
5470    }
5471}
5472
5473impl<'new_alloc> CloneIn<'new_alloc> for JSXAttributeItem<'_> {
5474    type Cloned = JSXAttributeItem<'new_alloc>;
5475
5476    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5477        match self {
5478            Self::Attribute(it) => JSXAttributeItem::Attribute(CloneIn::clone_in(it, allocator)),
5479            Self::SpreadAttribute(it) => {
5480                JSXAttributeItem::SpreadAttribute(CloneIn::clone_in(it, allocator))
5481            }
5482        }
5483    }
5484
5485    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5486        match self {
5487            Self::Attribute(it) => {
5488                JSXAttributeItem::Attribute(CloneIn::clone_in_with_semantic_ids(it, allocator))
5489            }
5490            Self::SpreadAttribute(it) => JSXAttributeItem::SpreadAttribute(
5491                CloneIn::clone_in_with_semantic_ids(it, allocator),
5492            ),
5493        }
5494    }
5495}
5496
5497impl<'new_alloc> CloneIn<'new_alloc> for JSXAttribute<'_> {
5498    type Cloned = JSXAttribute<'new_alloc>;
5499
5500    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5501        JSXAttribute {
5502            span: CloneIn::clone_in(&self.span, allocator),
5503            name: CloneIn::clone_in(&self.name, allocator),
5504            value: CloneIn::clone_in(&self.value, allocator),
5505        }
5506    }
5507
5508    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5509        JSXAttribute {
5510            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5511            name: CloneIn::clone_in_with_semantic_ids(&self.name, allocator),
5512            value: CloneIn::clone_in_with_semantic_ids(&self.value, allocator),
5513        }
5514    }
5515}
5516
5517impl<'new_alloc> CloneIn<'new_alloc> for JSXSpreadAttribute<'_> {
5518    type Cloned = JSXSpreadAttribute<'new_alloc>;
5519
5520    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5521        JSXSpreadAttribute {
5522            span: CloneIn::clone_in(&self.span, allocator),
5523            argument: CloneIn::clone_in(&self.argument, allocator),
5524        }
5525    }
5526
5527    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5528        JSXSpreadAttribute {
5529            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5530            argument: CloneIn::clone_in_with_semantic_ids(&self.argument, allocator),
5531        }
5532    }
5533}
5534
5535impl<'new_alloc> CloneIn<'new_alloc> for JSXAttributeName<'_> {
5536    type Cloned = JSXAttributeName<'new_alloc>;
5537
5538    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5539        match self {
5540            Self::Identifier(it) => JSXAttributeName::Identifier(CloneIn::clone_in(it, allocator)),
5541            Self::NamespacedName(it) => {
5542                JSXAttributeName::NamespacedName(CloneIn::clone_in(it, allocator))
5543            }
5544        }
5545    }
5546
5547    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5548        match self {
5549            Self::Identifier(it) => {
5550                JSXAttributeName::Identifier(CloneIn::clone_in_with_semantic_ids(it, allocator))
5551            }
5552            Self::NamespacedName(it) => {
5553                JSXAttributeName::NamespacedName(CloneIn::clone_in_with_semantic_ids(it, allocator))
5554            }
5555        }
5556    }
5557}
5558
5559impl<'new_alloc> CloneIn<'new_alloc> for JSXAttributeValue<'_> {
5560    type Cloned = JSXAttributeValue<'new_alloc>;
5561
5562    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5563        match self {
5564            Self::StringLiteral(it) => {
5565                JSXAttributeValue::StringLiteral(CloneIn::clone_in(it, allocator))
5566            }
5567            Self::ExpressionContainer(it) => {
5568                JSXAttributeValue::ExpressionContainer(CloneIn::clone_in(it, allocator))
5569            }
5570            Self::Element(it) => JSXAttributeValue::Element(CloneIn::clone_in(it, allocator)),
5571            Self::Fragment(it) => JSXAttributeValue::Fragment(CloneIn::clone_in(it, allocator)),
5572        }
5573    }
5574
5575    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5576        match self {
5577            Self::StringLiteral(it) => {
5578                JSXAttributeValue::StringLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
5579            }
5580            Self::ExpressionContainer(it) => JSXAttributeValue::ExpressionContainer(
5581                CloneIn::clone_in_with_semantic_ids(it, allocator),
5582            ),
5583            Self::Element(it) => {
5584                JSXAttributeValue::Element(CloneIn::clone_in_with_semantic_ids(it, allocator))
5585            }
5586            Self::Fragment(it) => {
5587                JSXAttributeValue::Fragment(CloneIn::clone_in_with_semantic_ids(it, allocator))
5588            }
5589        }
5590    }
5591}
5592
5593impl<'new_alloc> CloneIn<'new_alloc> for JSXIdentifier<'_> {
5594    type Cloned = JSXIdentifier<'new_alloc>;
5595
5596    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5597        JSXIdentifier {
5598            span: CloneIn::clone_in(&self.span, allocator),
5599            name: CloneIn::clone_in(&self.name, allocator),
5600        }
5601    }
5602
5603    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5604        JSXIdentifier {
5605            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5606            name: CloneIn::clone_in_with_semantic_ids(&self.name, allocator),
5607        }
5608    }
5609}
5610
5611impl<'new_alloc> CloneIn<'new_alloc> for JSXChild<'_> {
5612    type Cloned = JSXChild<'new_alloc>;
5613
5614    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5615        match self {
5616            Self::Text(it) => JSXChild::Text(CloneIn::clone_in(it, allocator)),
5617            Self::Element(it) => JSXChild::Element(CloneIn::clone_in(it, allocator)),
5618            Self::Fragment(it) => JSXChild::Fragment(CloneIn::clone_in(it, allocator)),
5619            Self::ExpressionContainer(it) => {
5620                JSXChild::ExpressionContainer(CloneIn::clone_in(it, allocator))
5621            }
5622            Self::Spread(it) => JSXChild::Spread(CloneIn::clone_in(it, allocator)),
5623        }
5624    }
5625
5626    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5627        match self {
5628            Self::Text(it) => JSXChild::Text(CloneIn::clone_in_with_semantic_ids(it, allocator)),
5629            Self::Element(it) => {
5630                JSXChild::Element(CloneIn::clone_in_with_semantic_ids(it, allocator))
5631            }
5632            Self::Fragment(it) => {
5633                JSXChild::Fragment(CloneIn::clone_in_with_semantic_ids(it, allocator))
5634            }
5635            Self::ExpressionContainer(it) => {
5636                JSXChild::ExpressionContainer(CloneIn::clone_in_with_semantic_ids(it, allocator))
5637            }
5638            Self::Spread(it) => {
5639                JSXChild::Spread(CloneIn::clone_in_with_semantic_ids(it, allocator))
5640            }
5641        }
5642    }
5643}
5644
5645impl<'new_alloc> CloneIn<'new_alloc> for JSXSpreadChild<'_> {
5646    type Cloned = JSXSpreadChild<'new_alloc>;
5647
5648    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5649        JSXSpreadChild {
5650            span: CloneIn::clone_in(&self.span, allocator),
5651            expression: CloneIn::clone_in(&self.expression, allocator),
5652        }
5653    }
5654
5655    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5656        JSXSpreadChild {
5657            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5658            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
5659        }
5660    }
5661}
5662
5663impl<'new_alloc> CloneIn<'new_alloc> for JSXText<'_> {
5664    type Cloned = JSXText<'new_alloc>;
5665
5666    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5667        JSXText {
5668            span: CloneIn::clone_in(&self.span, allocator),
5669            value: CloneIn::clone_in(&self.value, allocator),
5670            raw: CloneIn::clone_in(&self.raw, allocator),
5671        }
5672    }
5673
5674    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5675        JSXText {
5676            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5677            value: CloneIn::clone_in_with_semantic_ids(&self.value, allocator),
5678            raw: CloneIn::clone_in_with_semantic_ids(&self.raw, allocator),
5679        }
5680    }
5681}
5682
5683impl<'new_alloc> CloneIn<'new_alloc> for TSThisParameter<'_> {
5684    type Cloned = TSThisParameter<'new_alloc>;
5685
5686    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5687        TSThisParameter {
5688            span: CloneIn::clone_in(&self.span, allocator),
5689            this_span: CloneIn::clone_in(&self.this_span, allocator),
5690            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
5691        }
5692    }
5693
5694    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5695        TSThisParameter {
5696            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5697            this_span: CloneIn::clone_in_with_semantic_ids(&self.this_span, allocator),
5698            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
5699        }
5700    }
5701}
5702
5703impl<'new_alloc> CloneIn<'new_alloc> for TSEnumDeclaration<'_> {
5704    type Cloned = TSEnumDeclaration<'new_alloc>;
5705
5706    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5707        TSEnumDeclaration {
5708            span: CloneIn::clone_in(&self.span, allocator),
5709            id: CloneIn::clone_in(&self.id, allocator),
5710            body: CloneIn::clone_in(&self.body, allocator),
5711            r#const: CloneIn::clone_in(&self.r#const, allocator),
5712            declare: CloneIn::clone_in(&self.declare, allocator),
5713            scope_id: Default::default(),
5714        }
5715    }
5716
5717    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5718        TSEnumDeclaration {
5719            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5720            id: CloneIn::clone_in_with_semantic_ids(&self.id, allocator),
5721            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
5722            r#const: CloneIn::clone_in_with_semantic_ids(&self.r#const, allocator),
5723            declare: CloneIn::clone_in_with_semantic_ids(&self.declare, allocator),
5724            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
5725        }
5726    }
5727}
5728
5729impl<'new_alloc> CloneIn<'new_alloc> for TSEnumBody<'_> {
5730    type Cloned = TSEnumBody<'new_alloc>;
5731
5732    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5733        TSEnumBody {
5734            span: CloneIn::clone_in(&self.span, allocator),
5735            members: CloneIn::clone_in(&self.members, allocator),
5736        }
5737    }
5738
5739    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5740        TSEnumBody {
5741            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5742            members: CloneIn::clone_in_with_semantic_ids(&self.members, allocator),
5743        }
5744    }
5745}
5746
5747impl<'new_alloc> CloneIn<'new_alloc> for TSEnumMember<'_> {
5748    type Cloned = TSEnumMember<'new_alloc>;
5749
5750    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5751        TSEnumMember {
5752            span: CloneIn::clone_in(&self.span, allocator),
5753            id: CloneIn::clone_in(&self.id, allocator),
5754            initializer: CloneIn::clone_in(&self.initializer, allocator),
5755        }
5756    }
5757
5758    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5759        TSEnumMember {
5760            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5761            id: CloneIn::clone_in_with_semantic_ids(&self.id, allocator),
5762            initializer: CloneIn::clone_in_with_semantic_ids(&self.initializer, allocator),
5763        }
5764    }
5765}
5766
5767impl<'new_alloc> CloneIn<'new_alloc> for TSEnumMemberName<'_> {
5768    type Cloned = TSEnumMemberName<'new_alloc>;
5769
5770    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5771        match self {
5772            Self::Identifier(it) => TSEnumMemberName::Identifier(CloneIn::clone_in(it, allocator)),
5773            Self::String(it) => TSEnumMemberName::String(CloneIn::clone_in(it, allocator)),
5774            Self::ComputedString(it) => {
5775                TSEnumMemberName::ComputedString(CloneIn::clone_in(it, allocator))
5776            }
5777            Self::ComputedTemplateString(it) => {
5778                TSEnumMemberName::ComputedTemplateString(CloneIn::clone_in(it, allocator))
5779            }
5780        }
5781    }
5782
5783    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5784        match self {
5785            Self::Identifier(it) => {
5786                TSEnumMemberName::Identifier(CloneIn::clone_in_with_semantic_ids(it, allocator))
5787            }
5788            Self::String(it) => {
5789                TSEnumMemberName::String(CloneIn::clone_in_with_semantic_ids(it, allocator))
5790            }
5791            Self::ComputedString(it) => {
5792                TSEnumMemberName::ComputedString(CloneIn::clone_in_with_semantic_ids(it, allocator))
5793            }
5794            Self::ComputedTemplateString(it) => TSEnumMemberName::ComputedTemplateString(
5795                CloneIn::clone_in_with_semantic_ids(it, allocator),
5796            ),
5797        }
5798    }
5799}
5800
5801impl<'new_alloc> CloneIn<'new_alloc> for TSTypeAnnotation<'_> {
5802    type Cloned = TSTypeAnnotation<'new_alloc>;
5803
5804    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5805        TSTypeAnnotation {
5806            span: CloneIn::clone_in(&self.span, allocator),
5807            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
5808        }
5809    }
5810
5811    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5812        TSTypeAnnotation {
5813            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5814            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
5815        }
5816    }
5817}
5818
5819impl<'new_alloc> CloneIn<'new_alloc> for TSLiteralType<'_> {
5820    type Cloned = TSLiteralType<'new_alloc>;
5821
5822    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5823        TSLiteralType {
5824            span: CloneIn::clone_in(&self.span, allocator),
5825            literal: CloneIn::clone_in(&self.literal, allocator),
5826        }
5827    }
5828
5829    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5830        TSLiteralType {
5831            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
5832            literal: CloneIn::clone_in_with_semantic_ids(&self.literal, allocator),
5833        }
5834    }
5835}
5836
5837impl<'new_alloc> CloneIn<'new_alloc> for TSLiteral<'_> {
5838    type Cloned = TSLiteral<'new_alloc>;
5839
5840    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5841        match self {
5842            Self::BooleanLiteral(it) => TSLiteral::BooleanLiteral(CloneIn::clone_in(it, allocator)),
5843            Self::NumericLiteral(it) => TSLiteral::NumericLiteral(CloneIn::clone_in(it, allocator)),
5844            Self::BigIntLiteral(it) => TSLiteral::BigIntLiteral(CloneIn::clone_in(it, allocator)),
5845            Self::StringLiteral(it) => TSLiteral::StringLiteral(CloneIn::clone_in(it, allocator)),
5846            Self::TemplateLiteral(it) => {
5847                TSLiteral::TemplateLiteral(CloneIn::clone_in(it, allocator))
5848            }
5849            Self::UnaryExpression(it) => {
5850                TSLiteral::UnaryExpression(CloneIn::clone_in(it, allocator))
5851            }
5852        }
5853    }
5854
5855    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5856        match self {
5857            Self::BooleanLiteral(it) => {
5858                TSLiteral::BooleanLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
5859            }
5860            Self::NumericLiteral(it) => {
5861                TSLiteral::NumericLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
5862            }
5863            Self::BigIntLiteral(it) => {
5864                TSLiteral::BigIntLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
5865            }
5866            Self::StringLiteral(it) => {
5867                TSLiteral::StringLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
5868            }
5869            Self::TemplateLiteral(it) => {
5870                TSLiteral::TemplateLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
5871            }
5872            Self::UnaryExpression(it) => {
5873                TSLiteral::UnaryExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
5874            }
5875        }
5876    }
5877}
5878
5879impl<'new_alloc> CloneIn<'new_alloc> for TSType<'_> {
5880    type Cloned = TSType<'new_alloc>;
5881
5882    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5883        match self {
5884            Self::TSAnyKeyword(it) => TSType::TSAnyKeyword(CloneIn::clone_in(it, allocator)),
5885            Self::TSBigIntKeyword(it) => TSType::TSBigIntKeyword(CloneIn::clone_in(it, allocator)),
5886            Self::TSBooleanKeyword(it) => {
5887                TSType::TSBooleanKeyword(CloneIn::clone_in(it, allocator))
5888            }
5889            Self::TSIntrinsicKeyword(it) => {
5890                TSType::TSIntrinsicKeyword(CloneIn::clone_in(it, allocator))
5891            }
5892            Self::TSNeverKeyword(it) => TSType::TSNeverKeyword(CloneIn::clone_in(it, allocator)),
5893            Self::TSNullKeyword(it) => TSType::TSNullKeyword(CloneIn::clone_in(it, allocator)),
5894            Self::TSNumberKeyword(it) => TSType::TSNumberKeyword(CloneIn::clone_in(it, allocator)),
5895            Self::TSObjectKeyword(it) => TSType::TSObjectKeyword(CloneIn::clone_in(it, allocator)),
5896            Self::TSStringKeyword(it) => TSType::TSStringKeyword(CloneIn::clone_in(it, allocator)),
5897            Self::TSSymbolKeyword(it) => TSType::TSSymbolKeyword(CloneIn::clone_in(it, allocator)),
5898            Self::TSUndefinedKeyword(it) => {
5899                TSType::TSUndefinedKeyword(CloneIn::clone_in(it, allocator))
5900            }
5901            Self::TSUnknownKeyword(it) => {
5902                TSType::TSUnknownKeyword(CloneIn::clone_in(it, allocator))
5903            }
5904            Self::TSVoidKeyword(it) => TSType::TSVoidKeyword(CloneIn::clone_in(it, allocator)),
5905            Self::TSArrayType(it) => TSType::TSArrayType(CloneIn::clone_in(it, allocator)),
5906            Self::TSConditionalType(it) => {
5907                TSType::TSConditionalType(CloneIn::clone_in(it, allocator))
5908            }
5909            Self::TSConstructorType(it) => {
5910                TSType::TSConstructorType(CloneIn::clone_in(it, allocator))
5911            }
5912            Self::TSFunctionType(it) => TSType::TSFunctionType(CloneIn::clone_in(it, allocator)),
5913            Self::TSImportType(it) => TSType::TSImportType(CloneIn::clone_in(it, allocator)),
5914            Self::TSIndexedAccessType(it) => {
5915                TSType::TSIndexedAccessType(CloneIn::clone_in(it, allocator))
5916            }
5917            Self::TSInferType(it) => TSType::TSInferType(CloneIn::clone_in(it, allocator)),
5918            Self::TSIntersectionType(it) => {
5919                TSType::TSIntersectionType(CloneIn::clone_in(it, allocator))
5920            }
5921            Self::TSLiteralType(it) => TSType::TSLiteralType(CloneIn::clone_in(it, allocator)),
5922            Self::TSMappedType(it) => TSType::TSMappedType(CloneIn::clone_in(it, allocator)),
5923            Self::TSNamedTupleMember(it) => {
5924                TSType::TSNamedTupleMember(CloneIn::clone_in(it, allocator))
5925            }
5926            Self::TSTemplateLiteralType(it) => {
5927                TSType::TSTemplateLiteralType(CloneIn::clone_in(it, allocator))
5928            }
5929            Self::TSThisType(it) => TSType::TSThisType(CloneIn::clone_in(it, allocator)),
5930            Self::TSTupleType(it) => TSType::TSTupleType(CloneIn::clone_in(it, allocator)),
5931            Self::TSTypeLiteral(it) => TSType::TSTypeLiteral(CloneIn::clone_in(it, allocator)),
5932            Self::TSTypeOperatorType(it) => {
5933                TSType::TSTypeOperatorType(CloneIn::clone_in(it, allocator))
5934            }
5935            Self::TSTypePredicate(it) => TSType::TSTypePredicate(CloneIn::clone_in(it, allocator)),
5936            Self::TSTypeQuery(it) => TSType::TSTypeQuery(CloneIn::clone_in(it, allocator)),
5937            Self::TSTypeReference(it) => TSType::TSTypeReference(CloneIn::clone_in(it, allocator)),
5938            Self::TSUnionType(it) => TSType::TSUnionType(CloneIn::clone_in(it, allocator)),
5939            Self::TSParenthesizedType(it) => {
5940                TSType::TSParenthesizedType(CloneIn::clone_in(it, allocator))
5941            }
5942            Self::JSDocNullableType(it) => {
5943                TSType::JSDocNullableType(CloneIn::clone_in(it, allocator))
5944            }
5945            Self::JSDocNonNullableType(it) => {
5946                TSType::JSDocNonNullableType(CloneIn::clone_in(it, allocator))
5947            }
5948            Self::JSDocUnknownType(it) => {
5949                TSType::JSDocUnknownType(CloneIn::clone_in(it, allocator))
5950            }
5951        }
5952    }
5953
5954    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
5955        match self {
5956            Self::TSAnyKeyword(it) => {
5957                TSType::TSAnyKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
5958            }
5959            Self::TSBigIntKeyword(it) => {
5960                TSType::TSBigIntKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
5961            }
5962            Self::TSBooleanKeyword(it) => {
5963                TSType::TSBooleanKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
5964            }
5965            Self::TSIntrinsicKeyword(it) => {
5966                TSType::TSIntrinsicKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
5967            }
5968            Self::TSNeverKeyword(it) => {
5969                TSType::TSNeverKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
5970            }
5971            Self::TSNullKeyword(it) => {
5972                TSType::TSNullKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
5973            }
5974            Self::TSNumberKeyword(it) => {
5975                TSType::TSNumberKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
5976            }
5977            Self::TSObjectKeyword(it) => {
5978                TSType::TSObjectKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
5979            }
5980            Self::TSStringKeyword(it) => {
5981                TSType::TSStringKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
5982            }
5983            Self::TSSymbolKeyword(it) => {
5984                TSType::TSSymbolKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
5985            }
5986            Self::TSUndefinedKeyword(it) => {
5987                TSType::TSUndefinedKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
5988            }
5989            Self::TSUnknownKeyword(it) => {
5990                TSType::TSUnknownKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
5991            }
5992            Self::TSVoidKeyword(it) => {
5993                TSType::TSVoidKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
5994            }
5995            Self::TSArrayType(it) => {
5996                TSType::TSArrayType(CloneIn::clone_in_with_semantic_ids(it, allocator))
5997            }
5998            Self::TSConditionalType(it) => {
5999                TSType::TSConditionalType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6000            }
6001            Self::TSConstructorType(it) => {
6002                TSType::TSConstructorType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6003            }
6004            Self::TSFunctionType(it) => {
6005                TSType::TSFunctionType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6006            }
6007            Self::TSImportType(it) => {
6008                TSType::TSImportType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6009            }
6010            Self::TSIndexedAccessType(it) => {
6011                TSType::TSIndexedAccessType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6012            }
6013            Self::TSInferType(it) => {
6014                TSType::TSInferType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6015            }
6016            Self::TSIntersectionType(it) => {
6017                TSType::TSIntersectionType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6018            }
6019            Self::TSLiteralType(it) => {
6020                TSType::TSLiteralType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6021            }
6022            Self::TSMappedType(it) => {
6023                TSType::TSMappedType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6024            }
6025            Self::TSNamedTupleMember(it) => {
6026                TSType::TSNamedTupleMember(CloneIn::clone_in_with_semantic_ids(it, allocator))
6027            }
6028            Self::TSTemplateLiteralType(it) => {
6029                TSType::TSTemplateLiteralType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6030            }
6031            Self::TSThisType(it) => {
6032                TSType::TSThisType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6033            }
6034            Self::TSTupleType(it) => {
6035                TSType::TSTupleType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6036            }
6037            Self::TSTypeLiteral(it) => {
6038                TSType::TSTypeLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
6039            }
6040            Self::TSTypeOperatorType(it) => {
6041                TSType::TSTypeOperatorType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6042            }
6043            Self::TSTypePredicate(it) => {
6044                TSType::TSTypePredicate(CloneIn::clone_in_with_semantic_ids(it, allocator))
6045            }
6046            Self::TSTypeQuery(it) => {
6047                TSType::TSTypeQuery(CloneIn::clone_in_with_semantic_ids(it, allocator))
6048            }
6049            Self::TSTypeReference(it) => {
6050                TSType::TSTypeReference(CloneIn::clone_in_with_semantic_ids(it, allocator))
6051            }
6052            Self::TSUnionType(it) => {
6053                TSType::TSUnionType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6054            }
6055            Self::TSParenthesizedType(it) => {
6056                TSType::TSParenthesizedType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6057            }
6058            Self::JSDocNullableType(it) => {
6059                TSType::JSDocNullableType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6060            }
6061            Self::JSDocNonNullableType(it) => {
6062                TSType::JSDocNonNullableType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6063            }
6064            Self::JSDocUnknownType(it) => {
6065                TSType::JSDocUnknownType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6066            }
6067        }
6068    }
6069}
6070
6071impl<'new_alloc> CloneIn<'new_alloc> for TSConditionalType<'_> {
6072    type Cloned = TSConditionalType<'new_alloc>;
6073
6074    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6075        TSConditionalType {
6076            span: CloneIn::clone_in(&self.span, allocator),
6077            check_type: CloneIn::clone_in(&self.check_type, allocator),
6078            extends_type: CloneIn::clone_in(&self.extends_type, allocator),
6079            true_type: CloneIn::clone_in(&self.true_type, allocator),
6080            false_type: CloneIn::clone_in(&self.false_type, allocator),
6081            scope_id: Default::default(),
6082        }
6083    }
6084
6085    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6086        TSConditionalType {
6087            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6088            check_type: CloneIn::clone_in_with_semantic_ids(&self.check_type, allocator),
6089            extends_type: CloneIn::clone_in_with_semantic_ids(&self.extends_type, allocator),
6090            true_type: CloneIn::clone_in_with_semantic_ids(&self.true_type, allocator),
6091            false_type: CloneIn::clone_in_with_semantic_ids(&self.false_type, allocator),
6092            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
6093        }
6094    }
6095}
6096
6097impl<'new_alloc> CloneIn<'new_alloc> for TSUnionType<'_> {
6098    type Cloned = TSUnionType<'new_alloc>;
6099
6100    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6101        TSUnionType {
6102            span: CloneIn::clone_in(&self.span, allocator),
6103            types: CloneIn::clone_in(&self.types, allocator),
6104        }
6105    }
6106
6107    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6108        TSUnionType {
6109            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6110            types: CloneIn::clone_in_with_semantic_ids(&self.types, allocator),
6111        }
6112    }
6113}
6114
6115impl<'new_alloc> CloneIn<'new_alloc> for TSIntersectionType<'_> {
6116    type Cloned = TSIntersectionType<'new_alloc>;
6117
6118    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6119        TSIntersectionType {
6120            span: CloneIn::clone_in(&self.span, allocator),
6121            types: CloneIn::clone_in(&self.types, allocator),
6122        }
6123    }
6124
6125    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6126        TSIntersectionType {
6127            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6128            types: CloneIn::clone_in_with_semantic_ids(&self.types, allocator),
6129        }
6130    }
6131}
6132
6133impl<'new_alloc> CloneIn<'new_alloc> for TSParenthesizedType<'_> {
6134    type Cloned = TSParenthesizedType<'new_alloc>;
6135
6136    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6137        TSParenthesizedType {
6138            span: CloneIn::clone_in(&self.span, allocator),
6139            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
6140        }
6141    }
6142
6143    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6144        TSParenthesizedType {
6145            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6146            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
6147        }
6148    }
6149}
6150
6151impl<'new_alloc> CloneIn<'new_alloc> for TSTypeOperator<'_> {
6152    type Cloned = TSTypeOperator<'new_alloc>;
6153
6154    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6155        TSTypeOperator {
6156            span: CloneIn::clone_in(&self.span, allocator),
6157            operator: CloneIn::clone_in(&self.operator, allocator),
6158            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
6159        }
6160    }
6161
6162    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6163        TSTypeOperator {
6164            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6165            operator: CloneIn::clone_in_with_semantic_ids(&self.operator, allocator),
6166            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
6167        }
6168    }
6169}
6170
6171impl<'new_alloc> CloneIn<'new_alloc> for TSTypeOperatorOperator {
6172    type Cloned = TSTypeOperatorOperator;
6173
6174    #[inline(always)]
6175    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6176        *self
6177    }
6178
6179    #[inline(always)]
6180    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6181        *self
6182    }
6183}
6184
6185impl<'new_alloc> CloneIn<'new_alloc> for TSArrayType<'_> {
6186    type Cloned = TSArrayType<'new_alloc>;
6187
6188    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6189        TSArrayType {
6190            span: CloneIn::clone_in(&self.span, allocator),
6191            element_type: CloneIn::clone_in(&self.element_type, allocator),
6192        }
6193    }
6194
6195    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6196        TSArrayType {
6197            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6198            element_type: CloneIn::clone_in_with_semantic_ids(&self.element_type, allocator),
6199        }
6200    }
6201}
6202
6203impl<'new_alloc> CloneIn<'new_alloc> for TSIndexedAccessType<'_> {
6204    type Cloned = TSIndexedAccessType<'new_alloc>;
6205
6206    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6207        TSIndexedAccessType {
6208            span: CloneIn::clone_in(&self.span, allocator),
6209            object_type: CloneIn::clone_in(&self.object_type, allocator),
6210            index_type: CloneIn::clone_in(&self.index_type, allocator),
6211        }
6212    }
6213
6214    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6215        TSIndexedAccessType {
6216            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6217            object_type: CloneIn::clone_in_with_semantic_ids(&self.object_type, allocator),
6218            index_type: CloneIn::clone_in_with_semantic_ids(&self.index_type, allocator),
6219        }
6220    }
6221}
6222
6223impl<'new_alloc> CloneIn<'new_alloc> for TSTupleType<'_> {
6224    type Cloned = TSTupleType<'new_alloc>;
6225
6226    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6227        TSTupleType {
6228            span: CloneIn::clone_in(&self.span, allocator),
6229            element_types: CloneIn::clone_in(&self.element_types, allocator),
6230        }
6231    }
6232
6233    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6234        TSTupleType {
6235            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6236            element_types: CloneIn::clone_in_with_semantic_ids(&self.element_types, allocator),
6237        }
6238    }
6239}
6240
6241impl<'new_alloc> CloneIn<'new_alloc> for TSNamedTupleMember<'_> {
6242    type Cloned = TSNamedTupleMember<'new_alloc>;
6243
6244    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6245        TSNamedTupleMember {
6246            span: CloneIn::clone_in(&self.span, allocator),
6247            label: CloneIn::clone_in(&self.label, allocator),
6248            element_type: CloneIn::clone_in(&self.element_type, allocator),
6249            optional: CloneIn::clone_in(&self.optional, allocator),
6250        }
6251    }
6252
6253    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6254        TSNamedTupleMember {
6255            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6256            label: CloneIn::clone_in_with_semantic_ids(&self.label, allocator),
6257            element_type: CloneIn::clone_in_with_semantic_ids(&self.element_type, allocator),
6258            optional: CloneIn::clone_in_with_semantic_ids(&self.optional, allocator),
6259        }
6260    }
6261}
6262
6263impl<'new_alloc> CloneIn<'new_alloc> for TSOptionalType<'_> {
6264    type Cloned = TSOptionalType<'new_alloc>;
6265
6266    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6267        TSOptionalType {
6268            span: CloneIn::clone_in(&self.span, allocator),
6269            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
6270        }
6271    }
6272
6273    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6274        TSOptionalType {
6275            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6276            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
6277        }
6278    }
6279}
6280
6281impl<'new_alloc> CloneIn<'new_alloc> for TSRestType<'_> {
6282    type Cloned = TSRestType<'new_alloc>;
6283
6284    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6285        TSRestType {
6286            span: CloneIn::clone_in(&self.span, allocator),
6287            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
6288        }
6289    }
6290
6291    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6292        TSRestType {
6293            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6294            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
6295        }
6296    }
6297}
6298
6299impl<'new_alloc> CloneIn<'new_alloc> for TSTupleElement<'_> {
6300    type Cloned = TSTupleElement<'new_alloc>;
6301
6302    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6303        match self {
6304            Self::TSOptionalType(it) => {
6305                TSTupleElement::TSOptionalType(CloneIn::clone_in(it, allocator))
6306            }
6307            Self::TSRestType(it) => TSTupleElement::TSRestType(CloneIn::clone_in(it, allocator)),
6308            Self::TSAnyKeyword(it) => {
6309                TSTupleElement::TSAnyKeyword(CloneIn::clone_in(it, allocator))
6310            }
6311            Self::TSBigIntKeyword(it) => {
6312                TSTupleElement::TSBigIntKeyword(CloneIn::clone_in(it, allocator))
6313            }
6314            Self::TSBooleanKeyword(it) => {
6315                TSTupleElement::TSBooleanKeyword(CloneIn::clone_in(it, allocator))
6316            }
6317            Self::TSIntrinsicKeyword(it) => {
6318                TSTupleElement::TSIntrinsicKeyword(CloneIn::clone_in(it, allocator))
6319            }
6320            Self::TSNeverKeyword(it) => {
6321                TSTupleElement::TSNeverKeyword(CloneIn::clone_in(it, allocator))
6322            }
6323            Self::TSNullKeyword(it) => {
6324                TSTupleElement::TSNullKeyword(CloneIn::clone_in(it, allocator))
6325            }
6326            Self::TSNumberKeyword(it) => {
6327                TSTupleElement::TSNumberKeyword(CloneIn::clone_in(it, allocator))
6328            }
6329            Self::TSObjectKeyword(it) => {
6330                TSTupleElement::TSObjectKeyword(CloneIn::clone_in(it, allocator))
6331            }
6332            Self::TSStringKeyword(it) => {
6333                TSTupleElement::TSStringKeyword(CloneIn::clone_in(it, allocator))
6334            }
6335            Self::TSSymbolKeyword(it) => {
6336                TSTupleElement::TSSymbolKeyword(CloneIn::clone_in(it, allocator))
6337            }
6338            Self::TSUndefinedKeyword(it) => {
6339                TSTupleElement::TSUndefinedKeyword(CloneIn::clone_in(it, allocator))
6340            }
6341            Self::TSUnknownKeyword(it) => {
6342                TSTupleElement::TSUnknownKeyword(CloneIn::clone_in(it, allocator))
6343            }
6344            Self::TSVoidKeyword(it) => {
6345                TSTupleElement::TSVoidKeyword(CloneIn::clone_in(it, allocator))
6346            }
6347            Self::TSArrayType(it) => TSTupleElement::TSArrayType(CloneIn::clone_in(it, allocator)),
6348            Self::TSConditionalType(it) => {
6349                TSTupleElement::TSConditionalType(CloneIn::clone_in(it, allocator))
6350            }
6351            Self::TSConstructorType(it) => {
6352                TSTupleElement::TSConstructorType(CloneIn::clone_in(it, allocator))
6353            }
6354            Self::TSFunctionType(it) => {
6355                TSTupleElement::TSFunctionType(CloneIn::clone_in(it, allocator))
6356            }
6357            Self::TSImportType(it) => {
6358                TSTupleElement::TSImportType(CloneIn::clone_in(it, allocator))
6359            }
6360            Self::TSIndexedAccessType(it) => {
6361                TSTupleElement::TSIndexedAccessType(CloneIn::clone_in(it, allocator))
6362            }
6363            Self::TSInferType(it) => TSTupleElement::TSInferType(CloneIn::clone_in(it, allocator)),
6364            Self::TSIntersectionType(it) => {
6365                TSTupleElement::TSIntersectionType(CloneIn::clone_in(it, allocator))
6366            }
6367            Self::TSLiteralType(it) => {
6368                TSTupleElement::TSLiteralType(CloneIn::clone_in(it, allocator))
6369            }
6370            Self::TSMappedType(it) => {
6371                TSTupleElement::TSMappedType(CloneIn::clone_in(it, allocator))
6372            }
6373            Self::TSNamedTupleMember(it) => {
6374                TSTupleElement::TSNamedTupleMember(CloneIn::clone_in(it, allocator))
6375            }
6376            Self::TSTemplateLiteralType(it) => {
6377                TSTupleElement::TSTemplateLiteralType(CloneIn::clone_in(it, allocator))
6378            }
6379            Self::TSThisType(it) => TSTupleElement::TSThisType(CloneIn::clone_in(it, allocator)),
6380            Self::TSTupleType(it) => TSTupleElement::TSTupleType(CloneIn::clone_in(it, allocator)),
6381            Self::TSTypeLiteral(it) => {
6382                TSTupleElement::TSTypeLiteral(CloneIn::clone_in(it, allocator))
6383            }
6384            Self::TSTypeOperatorType(it) => {
6385                TSTupleElement::TSTypeOperatorType(CloneIn::clone_in(it, allocator))
6386            }
6387            Self::TSTypePredicate(it) => {
6388                TSTupleElement::TSTypePredicate(CloneIn::clone_in(it, allocator))
6389            }
6390            Self::TSTypeQuery(it) => TSTupleElement::TSTypeQuery(CloneIn::clone_in(it, allocator)),
6391            Self::TSTypeReference(it) => {
6392                TSTupleElement::TSTypeReference(CloneIn::clone_in(it, allocator))
6393            }
6394            Self::TSUnionType(it) => TSTupleElement::TSUnionType(CloneIn::clone_in(it, allocator)),
6395            Self::TSParenthesizedType(it) => {
6396                TSTupleElement::TSParenthesizedType(CloneIn::clone_in(it, allocator))
6397            }
6398            Self::JSDocNullableType(it) => {
6399                TSTupleElement::JSDocNullableType(CloneIn::clone_in(it, allocator))
6400            }
6401            Self::JSDocNonNullableType(it) => {
6402                TSTupleElement::JSDocNonNullableType(CloneIn::clone_in(it, allocator))
6403            }
6404            Self::JSDocUnknownType(it) => {
6405                TSTupleElement::JSDocUnknownType(CloneIn::clone_in(it, allocator))
6406            }
6407        }
6408    }
6409
6410    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6411        match self {
6412            Self::TSOptionalType(it) => {
6413                TSTupleElement::TSOptionalType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6414            }
6415            Self::TSRestType(it) => {
6416                TSTupleElement::TSRestType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6417            }
6418            Self::TSAnyKeyword(it) => {
6419                TSTupleElement::TSAnyKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
6420            }
6421            Self::TSBigIntKeyword(it) => {
6422                TSTupleElement::TSBigIntKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
6423            }
6424            Self::TSBooleanKeyword(it) => {
6425                TSTupleElement::TSBooleanKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
6426            }
6427            Self::TSIntrinsicKeyword(it) => TSTupleElement::TSIntrinsicKeyword(
6428                CloneIn::clone_in_with_semantic_ids(it, allocator),
6429            ),
6430            Self::TSNeverKeyword(it) => {
6431                TSTupleElement::TSNeverKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
6432            }
6433            Self::TSNullKeyword(it) => {
6434                TSTupleElement::TSNullKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
6435            }
6436            Self::TSNumberKeyword(it) => {
6437                TSTupleElement::TSNumberKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
6438            }
6439            Self::TSObjectKeyword(it) => {
6440                TSTupleElement::TSObjectKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
6441            }
6442            Self::TSStringKeyword(it) => {
6443                TSTupleElement::TSStringKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
6444            }
6445            Self::TSSymbolKeyword(it) => {
6446                TSTupleElement::TSSymbolKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
6447            }
6448            Self::TSUndefinedKeyword(it) => TSTupleElement::TSUndefinedKeyword(
6449                CloneIn::clone_in_with_semantic_ids(it, allocator),
6450            ),
6451            Self::TSUnknownKeyword(it) => {
6452                TSTupleElement::TSUnknownKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
6453            }
6454            Self::TSVoidKeyword(it) => {
6455                TSTupleElement::TSVoidKeyword(CloneIn::clone_in_with_semantic_ids(it, allocator))
6456            }
6457            Self::TSArrayType(it) => {
6458                TSTupleElement::TSArrayType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6459            }
6460            Self::TSConditionalType(it) => TSTupleElement::TSConditionalType(
6461                CloneIn::clone_in_with_semantic_ids(it, allocator),
6462            ),
6463            Self::TSConstructorType(it) => TSTupleElement::TSConstructorType(
6464                CloneIn::clone_in_with_semantic_ids(it, allocator),
6465            ),
6466            Self::TSFunctionType(it) => {
6467                TSTupleElement::TSFunctionType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6468            }
6469            Self::TSImportType(it) => {
6470                TSTupleElement::TSImportType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6471            }
6472            Self::TSIndexedAccessType(it) => TSTupleElement::TSIndexedAccessType(
6473                CloneIn::clone_in_with_semantic_ids(it, allocator),
6474            ),
6475            Self::TSInferType(it) => {
6476                TSTupleElement::TSInferType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6477            }
6478            Self::TSIntersectionType(it) => TSTupleElement::TSIntersectionType(
6479                CloneIn::clone_in_with_semantic_ids(it, allocator),
6480            ),
6481            Self::TSLiteralType(it) => {
6482                TSTupleElement::TSLiteralType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6483            }
6484            Self::TSMappedType(it) => {
6485                TSTupleElement::TSMappedType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6486            }
6487            Self::TSNamedTupleMember(it) => TSTupleElement::TSNamedTupleMember(
6488                CloneIn::clone_in_with_semantic_ids(it, allocator),
6489            ),
6490            Self::TSTemplateLiteralType(it) => TSTupleElement::TSTemplateLiteralType(
6491                CloneIn::clone_in_with_semantic_ids(it, allocator),
6492            ),
6493            Self::TSThisType(it) => {
6494                TSTupleElement::TSThisType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6495            }
6496            Self::TSTupleType(it) => {
6497                TSTupleElement::TSTupleType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6498            }
6499            Self::TSTypeLiteral(it) => {
6500                TSTupleElement::TSTypeLiteral(CloneIn::clone_in_with_semantic_ids(it, allocator))
6501            }
6502            Self::TSTypeOperatorType(it) => TSTupleElement::TSTypeOperatorType(
6503                CloneIn::clone_in_with_semantic_ids(it, allocator),
6504            ),
6505            Self::TSTypePredicate(it) => {
6506                TSTupleElement::TSTypePredicate(CloneIn::clone_in_with_semantic_ids(it, allocator))
6507            }
6508            Self::TSTypeQuery(it) => {
6509                TSTupleElement::TSTypeQuery(CloneIn::clone_in_with_semantic_ids(it, allocator))
6510            }
6511            Self::TSTypeReference(it) => {
6512                TSTupleElement::TSTypeReference(CloneIn::clone_in_with_semantic_ids(it, allocator))
6513            }
6514            Self::TSUnionType(it) => {
6515                TSTupleElement::TSUnionType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6516            }
6517            Self::TSParenthesizedType(it) => TSTupleElement::TSParenthesizedType(
6518                CloneIn::clone_in_with_semantic_ids(it, allocator),
6519            ),
6520            Self::JSDocNullableType(it) => TSTupleElement::JSDocNullableType(
6521                CloneIn::clone_in_with_semantic_ids(it, allocator),
6522            ),
6523            Self::JSDocNonNullableType(it) => TSTupleElement::JSDocNonNullableType(
6524                CloneIn::clone_in_with_semantic_ids(it, allocator),
6525            ),
6526            Self::JSDocUnknownType(it) => {
6527                TSTupleElement::JSDocUnknownType(CloneIn::clone_in_with_semantic_ids(it, allocator))
6528            }
6529        }
6530    }
6531}
6532
6533impl<'new_alloc> CloneIn<'new_alloc> for TSAnyKeyword {
6534    type Cloned = TSAnyKeyword;
6535
6536    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6537        TSAnyKeyword { span: CloneIn::clone_in(&self.span, allocator) }
6538    }
6539
6540    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6541        TSAnyKeyword { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
6542    }
6543}
6544
6545impl<'new_alloc> CloneIn<'new_alloc> for TSStringKeyword {
6546    type Cloned = TSStringKeyword;
6547
6548    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6549        TSStringKeyword { span: CloneIn::clone_in(&self.span, allocator) }
6550    }
6551
6552    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6553        TSStringKeyword { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
6554    }
6555}
6556
6557impl<'new_alloc> CloneIn<'new_alloc> for TSBooleanKeyword {
6558    type Cloned = TSBooleanKeyword;
6559
6560    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6561        TSBooleanKeyword { span: CloneIn::clone_in(&self.span, allocator) }
6562    }
6563
6564    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6565        TSBooleanKeyword { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
6566    }
6567}
6568
6569impl<'new_alloc> CloneIn<'new_alloc> for TSNumberKeyword {
6570    type Cloned = TSNumberKeyword;
6571
6572    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6573        TSNumberKeyword { span: CloneIn::clone_in(&self.span, allocator) }
6574    }
6575
6576    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6577        TSNumberKeyword { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
6578    }
6579}
6580
6581impl<'new_alloc> CloneIn<'new_alloc> for TSNeverKeyword {
6582    type Cloned = TSNeverKeyword;
6583
6584    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6585        TSNeverKeyword { span: CloneIn::clone_in(&self.span, allocator) }
6586    }
6587
6588    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6589        TSNeverKeyword { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
6590    }
6591}
6592
6593impl<'new_alloc> CloneIn<'new_alloc> for TSIntrinsicKeyword {
6594    type Cloned = TSIntrinsicKeyword;
6595
6596    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6597        TSIntrinsicKeyword { span: CloneIn::clone_in(&self.span, allocator) }
6598    }
6599
6600    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6601        TSIntrinsicKeyword { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
6602    }
6603}
6604
6605impl<'new_alloc> CloneIn<'new_alloc> for TSUnknownKeyword {
6606    type Cloned = TSUnknownKeyword;
6607
6608    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6609        TSUnknownKeyword { span: CloneIn::clone_in(&self.span, allocator) }
6610    }
6611
6612    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6613        TSUnknownKeyword { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
6614    }
6615}
6616
6617impl<'new_alloc> CloneIn<'new_alloc> for TSNullKeyword {
6618    type Cloned = TSNullKeyword;
6619
6620    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6621        TSNullKeyword { span: CloneIn::clone_in(&self.span, allocator) }
6622    }
6623
6624    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6625        TSNullKeyword { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
6626    }
6627}
6628
6629impl<'new_alloc> CloneIn<'new_alloc> for TSUndefinedKeyword {
6630    type Cloned = TSUndefinedKeyword;
6631
6632    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6633        TSUndefinedKeyword { span: CloneIn::clone_in(&self.span, allocator) }
6634    }
6635
6636    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6637        TSUndefinedKeyword { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
6638    }
6639}
6640
6641impl<'new_alloc> CloneIn<'new_alloc> for TSVoidKeyword {
6642    type Cloned = TSVoidKeyword;
6643
6644    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6645        TSVoidKeyword { span: CloneIn::clone_in(&self.span, allocator) }
6646    }
6647
6648    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6649        TSVoidKeyword { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
6650    }
6651}
6652
6653impl<'new_alloc> CloneIn<'new_alloc> for TSSymbolKeyword {
6654    type Cloned = TSSymbolKeyword;
6655
6656    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6657        TSSymbolKeyword { span: CloneIn::clone_in(&self.span, allocator) }
6658    }
6659
6660    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6661        TSSymbolKeyword { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
6662    }
6663}
6664
6665impl<'new_alloc> CloneIn<'new_alloc> for TSThisType {
6666    type Cloned = TSThisType;
6667
6668    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6669        TSThisType { span: CloneIn::clone_in(&self.span, allocator) }
6670    }
6671
6672    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6673        TSThisType { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
6674    }
6675}
6676
6677impl<'new_alloc> CloneIn<'new_alloc> for TSObjectKeyword {
6678    type Cloned = TSObjectKeyword;
6679
6680    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6681        TSObjectKeyword { span: CloneIn::clone_in(&self.span, allocator) }
6682    }
6683
6684    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6685        TSObjectKeyword { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
6686    }
6687}
6688
6689impl<'new_alloc> CloneIn<'new_alloc> for TSBigIntKeyword {
6690    type Cloned = TSBigIntKeyword;
6691
6692    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6693        TSBigIntKeyword { span: CloneIn::clone_in(&self.span, allocator) }
6694    }
6695
6696    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6697        TSBigIntKeyword { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
6698    }
6699}
6700
6701impl<'new_alloc> CloneIn<'new_alloc> for TSTypeReference<'_> {
6702    type Cloned = TSTypeReference<'new_alloc>;
6703
6704    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6705        TSTypeReference {
6706            span: CloneIn::clone_in(&self.span, allocator),
6707            type_name: CloneIn::clone_in(&self.type_name, allocator),
6708            type_arguments: CloneIn::clone_in(&self.type_arguments, allocator),
6709        }
6710    }
6711
6712    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6713        TSTypeReference {
6714            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6715            type_name: CloneIn::clone_in_with_semantic_ids(&self.type_name, allocator),
6716            type_arguments: CloneIn::clone_in_with_semantic_ids(&self.type_arguments, allocator),
6717        }
6718    }
6719}
6720
6721impl<'new_alloc> CloneIn<'new_alloc> for TSTypeName<'_> {
6722    type Cloned = TSTypeName<'new_alloc>;
6723
6724    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6725        match self {
6726            Self::IdentifierReference(it) => {
6727                TSTypeName::IdentifierReference(CloneIn::clone_in(it, allocator))
6728            }
6729            Self::QualifiedName(it) => TSTypeName::QualifiedName(CloneIn::clone_in(it, allocator)),
6730            Self::ThisExpression(it) => {
6731                TSTypeName::ThisExpression(CloneIn::clone_in(it, allocator))
6732            }
6733        }
6734    }
6735
6736    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6737        match self {
6738            Self::IdentifierReference(it) => {
6739                TSTypeName::IdentifierReference(CloneIn::clone_in_with_semantic_ids(it, allocator))
6740            }
6741            Self::QualifiedName(it) => {
6742                TSTypeName::QualifiedName(CloneIn::clone_in_with_semantic_ids(it, allocator))
6743            }
6744            Self::ThisExpression(it) => {
6745                TSTypeName::ThisExpression(CloneIn::clone_in_with_semantic_ids(it, allocator))
6746            }
6747        }
6748    }
6749}
6750
6751impl<'new_alloc> CloneIn<'new_alloc> for TSQualifiedName<'_> {
6752    type Cloned = TSQualifiedName<'new_alloc>;
6753
6754    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6755        TSQualifiedName {
6756            span: CloneIn::clone_in(&self.span, allocator),
6757            left: CloneIn::clone_in(&self.left, allocator),
6758            right: CloneIn::clone_in(&self.right, allocator),
6759        }
6760    }
6761
6762    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6763        TSQualifiedName {
6764            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6765            left: CloneIn::clone_in_with_semantic_ids(&self.left, allocator),
6766            right: CloneIn::clone_in_with_semantic_ids(&self.right, allocator),
6767        }
6768    }
6769}
6770
6771impl<'new_alloc> CloneIn<'new_alloc> for TSTypeParameterInstantiation<'_> {
6772    type Cloned = TSTypeParameterInstantiation<'new_alloc>;
6773
6774    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6775        TSTypeParameterInstantiation {
6776            span: CloneIn::clone_in(&self.span, allocator),
6777            params: CloneIn::clone_in(&self.params, allocator),
6778        }
6779    }
6780
6781    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6782        TSTypeParameterInstantiation {
6783            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6784            params: CloneIn::clone_in_with_semantic_ids(&self.params, allocator),
6785        }
6786    }
6787}
6788
6789impl<'new_alloc> CloneIn<'new_alloc> for TSTypeParameter<'_> {
6790    type Cloned = TSTypeParameter<'new_alloc>;
6791
6792    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6793        TSTypeParameter {
6794            span: CloneIn::clone_in(&self.span, allocator),
6795            name: CloneIn::clone_in(&self.name, allocator),
6796            constraint: CloneIn::clone_in(&self.constraint, allocator),
6797            default: CloneIn::clone_in(&self.default, allocator),
6798            r#in: CloneIn::clone_in(&self.r#in, allocator),
6799            out: CloneIn::clone_in(&self.out, allocator),
6800            r#const: CloneIn::clone_in(&self.r#const, allocator),
6801        }
6802    }
6803
6804    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6805        TSTypeParameter {
6806            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6807            name: CloneIn::clone_in_with_semantic_ids(&self.name, allocator),
6808            constraint: CloneIn::clone_in_with_semantic_ids(&self.constraint, allocator),
6809            default: CloneIn::clone_in_with_semantic_ids(&self.default, allocator),
6810            r#in: CloneIn::clone_in_with_semantic_ids(&self.r#in, allocator),
6811            out: CloneIn::clone_in_with_semantic_ids(&self.out, allocator),
6812            r#const: CloneIn::clone_in_with_semantic_ids(&self.r#const, allocator),
6813        }
6814    }
6815}
6816
6817impl<'new_alloc> CloneIn<'new_alloc> for TSTypeParameterDeclaration<'_> {
6818    type Cloned = TSTypeParameterDeclaration<'new_alloc>;
6819
6820    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6821        TSTypeParameterDeclaration {
6822            span: CloneIn::clone_in(&self.span, allocator),
6823            params: CloneIn::clone_in(&self.params, allocator),
6824        }
6825    }
6826
6827    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6828        TSTypeParameterDeclaration {
6829            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6830            params: CloneIn::clone_in_with_semantic_ids(&self.params, allocator),
6831        }
6832    }
6833}
6834
6835impl<'new_alloc> CloneIn<'new_alloc> for TSTypeAliasDeclaration<'_> {
6836    type Cloned = TSTypeAliasDeclaration<'new_alloc>;
6837
6838    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6839        TSTypeAliasDeclaration {
6840            span: CloneIn::clone_in(&self.span, allocator),
6841            id: CloneIn::clone_in(&self.id, allocator),
6842            type_parameters: CloneIn::clone_in(&self.type_parameters, allocator),
6843            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
6844            declare: CloneIn::clone_in(&self.declare, allocator),
6845            scope_id: Default::default(),
6846        }
6847    }
6848
6849    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6850        TSTypeAliasDeclaration {
6851            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6852            id: CloneIn::clone_in_with_semantic_ids(&self.id, allocator),
6853            type_parameters: CloneIn::clone_in_with_semantic_ids(&self.type_parameters, allocator),
6854            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
6855            declare: CloneIn::clone_in_with_semantic_ids(&self.declare, allocator),
6856            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
6857        }
6858    }
6859}
6860
6861impl<'new_alloc> CloneIn<'new_alloc> for TSAccessibility {
6862    type Cloned = TSAccessibility;
6863
6864    #[inline(always)]
6865    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6866        *self
6867    }
6868
6869    #[inline(always)]
6870    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6871        *self
6872    }
6873}
6874
6875impl<'new_alloc> CloneIn<'new_alloc> for TSClassImplements<'_> {
6876    type Cloned = TSClassImplements<'new_alloc>;
6877
6878    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6879        TSClassImplements {
6880            span: CloneIn::clone_in(&self.span, allocator),
6881            expression: CloneIn::clone_in(&self.expression, allocator),
6882            type_arguments: CloneIn::clone_in(&self.type_arguments, allocator),
6883        }
6884    }
6885
6886    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6887        TSClassImplements {
6888            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6889            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
6890            type_arguments: CloneIn::clone_in_with_semantic_ids(&self.type_arguments, allocator),
6891        }
6892    }
6893}
6894
6895impl<'new_alloc> CloneIn<'new_alloc> for TSInterfaceDeclaration<'_> {
6896    type Cloned = TSInterfaceDeclaration<'new_alloc>;
6897
6898    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6899        TSInterfaceDeclaration {
6900            span: CloneIn::clone_in(&self.span, allocator),
6901            id: CloneIn::clone_in(&self.id, allocator),
6902            type_parameters: CloneIn::clone_in(&self.type_parameters, allocator),
6903            extends: CloneIn::clone_in(&self.extends, allocator),
6904            body: CloneIn::clone_in(&self.body, allocator),
6905            declare: CloneIn::clone_in(&self.declare, allocator),
6906            scope_id: Default::default(),
6907        }
6908    }
6909
6910    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6911        TSInterfaceDeclaration {
6912            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6913            id: CloneIn::clone_in_with_semantic_ids(&self.id, allocator),
6914            type_parameters: CloneIn::clone_in_with_semantic_ids(&self.type_parameters, allocator),
6915            extends: CloneIn::clone_in_with_semantic_ids(&self.extends, allocator),
6916            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
6917            declare: CloneIn::clone_in_with_semantic_ids(&self.declare, allocator),
6918            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
6919        }
6920    }
6921}
6922
6923impl<'new_alloc> CloneIn<'new_alloc> for TSInterfaceBody<'_> {
6924    type Cloned = TSInterfaceBody<'new_alloc>;
6925
6926    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6927        TSInterfaceBody {
6928            span: CloneIn::clone_in(&self.span, allocator),
6929            body: CloneIn::clone_in(&self.body, allocator),
6930        }
6931    }
6932
6933    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6934        TSInterfaceBody {
6935            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6936            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
6937        }
6938    }
6939}
6940
6941impl<'new_alloc> CloneIn<'new_alloc> for TSPropertySignature<'_> {
6942    type Cloned = TSPropertySignature<'new_alloc>;
6943
6944    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6945        TSPropertySignature {
6946            span: CloneIn::clone_in(&self.span, allocator),
6947            computed: CloneIn::clone_in(&self.computed, allocator),
6948            optional: CloneIn::clone_in(&self.optional, allocator),
6949            readonly: CloneIn::clone_in(&self.readonly, allocator),
6950            key: CloneIn::clone_in(&self.key, allocator),
6951            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
6952        }
6953    }
6954
6955    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6956        TSPropertySignature {
6957            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
6958            computed: CloneIn::clone_in_with_semantic_ids(&self.computed, allocator),
6959            optional: CloneIn::clone_in_with_semantic_ids(&self.optional, allocator),
6960            readonly: CloneIn::clone_in_with_semantic_ids(&self.readonly, allocator),
6961            key: CloneIn::clone_in_with_semantic_ids(&self.key, allocator),
6962            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
6963        }
6964    }
6965}
6966
6967impl<'new_alloc> CloneIn<'new_alloc> for TSSignature<'_> {
6968    type Cloned = TSSignature<'new_alloc>;
6969
6970    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6971        match self {
6972            Self::TSIndexSignature(it) => {
6973                TSSignature::TSIndexSignature(CloneIn::clone_in(it, allocator))
6974            }
6975            Self::TSPropertySignature(it) => {
6976                TSSignature::TSPropertySignature(CloneIn::clone_in(it, allocator))
6977            }
6978            Self::TSCallSignatureDeclaration(it) => {
6979                TSSignature::TSCallSignatureDeclaration(CloneIn::clone_in(it, allocator))
6980            }
6981            Self::TSConstructSignatureDeclaration(it) => {
6982                TSSignature::TSConstructSignatureDeclaration(CloneIn::clone_in(it, allocator))
6983            }
6984            Self::TSMethodSignature(it) => {
6985                TSSignature::TSMethodSignature(CloneIn::clone_in(it, allocator))
6986            }
6987        }
6988    }
6989
6990    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
6991        match self {
6992            Self::TSIndexSignature(it) => {
6993                TSSignature::TSIndexSignature(CloneIn::clone_in_with_semantic_ids(it, allocator))
6994            }
6995            Self::TSPropertySignature(it) => {
6996                TSSignature::TSPropertySignature(CloneIn::clone_in_with_semantic_ids(it, allocator))
6997            }
6998            Self::TSCallSignatureDeclaration(it) => TSSignature::TSCallSignatureDeclaration(
6999                CloneIn::clone_in_with_semantic_ids(it, allocator),
7000            ),
7001            Self::TSConstructSignatureDeclaration(it) => {
7002                TSSignature::TSConstructSignatureDeclaration(CloneIn::clone_in_with_semantic_ids(
7003                    it, allocator,
7004                ))
7005            }
7006            Self::TSMethodSignature(it) => {
7007                TSSignature::TSMethodSignature(CloneIn::clone_in_with_semantic_ids(it, allocator))
7008            }
7009        }
7010    }
7011}
7012
7013impl<'new_alloc> CloneIn<'new_alloc> for TSIndexSignature<'_> {
7014    type Cloned = TSIndexSignature<'new_alloc>;
7015
7016    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7017        TSIndexSignature {
7018            span: CloneIn::clone_in(&self.span, allocator),
7019            parameters: CloneIn::clone_in(&self.parameters, allocator),
7020            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
7021            readonly: CloneIn::clone_in(&self.readonly, allocator),
7022            r#static: CloneIn::clone_in(&self.r#static, allocator),
7023        }
7024    }
7025
7026    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7027        TSIndexSignature {
7028            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7029            parameters: CloneIn::clone_in_with_semantic_ids(&self.parameters, allocator),
7030            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
7031            readonly: CloneIn::clone_in_with_semantic_ids(&self.readonly, allocator),
7032            r#static: CloneIn::clone_in_with_semantic_ids(&self.r#static, allocator),
7033        }
7034    }
7035}
7036
7037impl<'new_alloc> CloneIn<'new_alloc> for TSCallSignatureDeclaration<'_> {
7038    type Cloned = TSCallSignatureDeclaration<'new_alloc>;
7039
7040    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7041        TSCallSignatureDeclaration {
7042            span: CloneIn::clone_in(&self.span, allocator),
7043            type_parameters: CloneIn::clone_in(&self.type_parameters, allocator),
7044            this_param: CloneIn::clone_in(&self.this_param, allocator),
7045            params: CloneIn::clone_in(&self.params, allocator),
7046            return_type: CloneIn::clone_in(&self.return_type, allocator),
7047        }
7048    }
7049
7050    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7051        TSCallSignatureDeclaration {
7052            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7053            type_parameters: CloneIn::clone_in_with_semantic_ids(&self.type_parameters, allocator),
7054            this_param: CloneIn::clone_in_with_semantic_ids(&self.this_param, allocator),
7055            params: CloneIn::clone_in_with_semantic_ids(&self.params, allocator),
7056            return_type: CloneIn::clone_in_with_semantic_ids(&self.return_type, allocator),
7057        }
7058    }
7059}
7060
7061impl<'new_alloc> CloneIn<'new_alloc> for TSMethodSignatureKind {
7062    type Cloned = TSMethodSignatureKind;
7063
7064    #[inline(always)]
7065    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7066        *self
7067    }
7068
7069    #[inline(always)]
7070    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7071        *self
7072    }
7073}
7074
7075impl<'new_alloc> CloneIn<'new_alloc> for TSMethodSignature<'_> {
7076    type Cloned = TSMethodSignature<'new_alloc>;
7077
7078    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7079        TSMethodSignature {
7080            span: CloneIn::clone_in(&self.span, allocator),
7081            key: CloneIn::clone_in(&self.key, allocator),
7082            computed: CloneIn::clone_in(&self.computed, allocator),
7083            optional: CloneIn::clone_in(&self.optional, allocator),
7084            kind: CloneIn::clone_in(&self.kind, allocator),
7085            type_parameters: CloneIn::clone_in(&self.type_parameters, allocator),
7086            this_param: CloneIn::clone_in(&self.this_param, allocator),
7087            params: CloneIn::clone_in(&self.params, allocator),
7088            return_type: CloneIn::clone_in(&self.return_type, allocator),
7089            scope_id: Default::default(),
7090        }
7091    }
7092
7093    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7094        TSMethodSignature {
7095            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7096            key: CloneIn::clone_in_with_semantic_ids(&self.key, allocator),
7097            computed: CloneIn::clone_in_with_semantic_ids(&self.computed, allocator),
7098            optional: CloneIn::clone_in_with_semantic_ids(&self.optional, allocator),
7099            kind: CloneIn::clone_in_with_semantic_ids(&self.kind, allocator),
7100            type_parameters: CloneIn::clone_in_with_semantic_ids(&self.type_parameters, allocator),
7101            this_param: CloneIn::clone_in_with_semantic_ids(&self.this_param, allocator),
7102            params: CloneIn::clone_in_with_semantic_ids(&self.params, allocator),
7103            return_type: CloneIn::clone_in_with_semantic_ids(&self.return_type, allocator),
7104            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
7105        }
7106    }
7107}
7108
7109impl<'new_alloc> CloneIn<'new_alloc> for TSConstructSignatureDeclaration<'_> {
7110    type Cloned = TSConstructSignatureDeclaration<'new_alloc>;
7111
7112    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7113        TSConstructSignatureDeclaration {
7114            span: CloneIn::clone_in(&self.span, allocator),
7115            type_parameters: CloneIn::clone_in(&self.type_parameters, allocator),
7116            params: CloneIn::clone_in(&self.params, allocator),
7117            return_type: CloneIn::clone_in(&self.return_type, allocator),
7118            scope_id: Default::default(),
7119        }
7120    }
7121
7122    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7123        TSConstructSignatureDeclaration {
7124            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7125            type_parameters: CloneIn::clone_in_with_semantic_ids(&self.type_parameters, allocator),
7126            params: CloneIn::clone_in_with_semantic_ids(&self.params, allocator),
7127            return_type: CloneIn::clone_in_with_semantic_ids(&self.return_type, allocator),
7128            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
7129        }
7130    }
7131}
7132
7133impl<'new_alloc> CloneIn<'new_alloc> for TSIndexSignatureName<'_> {
7134    type Cloned = TSIndexSignatureName<'new_alloc>;
7135
7136    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7137        TSIndexSignatureName {
7138            span: CloneIn::clone_in(&self.span, allocator),
7139            name: CloneIn::clone_in(&self.name, allocator),
7140            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
7141        }
7142    }
7143
7144    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7145        TSIndexSignatureName {
7146            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7147            name: CloneIn::clone_in_with_semantic_ids(&self.name, allocator),
7148            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
7149        }
7150    }
7151}
7152
7153impl<'new_alloc> CloneIn<'new_alloc> for TSInterfaceHeritage<'_> {
7154    type Cloned = TSInterfaceHeritage<'new_alloc>;
7155
7156    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7157        TSInterfaceHeritage {
7158            span: CloneIn::clone_in(&self.span, allocator),
7159            expression: CloneIn::clone_in(&self.expression, allocator),
7160            type_arguments: CloneIn::clone_in(&self.type_arguments, allocator),
7161        }
7162    }
7163
7164    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7165        TSInterfaceHeritage {
7166            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7167            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
7168            type_arguments: CloneIn::clone_in_with_semantic_ids(&self.type_arguments, allocator),
7169        }
7170    }
7171}
7172
7173impl<'new_alloc> CloneIn<'new_alloc> for TSTypePredicate<'_> {
7174    type Cloned = TSTypePredicate<'new_alloc>;
7175
7176    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7177        TSTypePredicate {
7178            span: CloneIn::clone_in(&self.span, allocator),
7179            parameter_name: CloneIn::clone_in(&self.parameter_name, allocator),
7180            asserts: CloneIn::clone_in(&self.asserts, allocator),
7181            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
7182        }
7183    }
7184
7185    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7186        TSTypePredicate {
7187            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7188            parameter_name: CloneIn::clone_in_with_semantic_ids(&self.parameter_name, allocator),
7189            asserts: CloneIn::clone_in_with_semantic_ids(&self.asserts, allocator),
7190            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
7191        }
7192    }
7193}
7194
7195impl<'new_alloc> CloneIn<'new_alloc> for TSTypePredicateName<'_> {
7196    type Cloned = TSTypePredicateName<'new_alloc>;
7197
7198    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7199        match self {
7200            Self::Identifier(it) => {
7201                TSTypePredicateName::Identifier(CloneIn::clone_in(it, allocator))
7202            }
7203            Self::This(it) => TSTypePredicateName::This(CloneIn::clone_in(it, allocator)),
7204        }
7205    }
7206
7207    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7208        match self {
7209            Self::Identifier(it) => {
7210                TSTypePredicateName::Identifier(CloneIn::clone_in_with_semantic_ids(it, allocator))
7211            }
7212            Self::This(it) => {
7213                TSTypePredicateName::This(CloneIn::clone_in_with_semantic_ids(it, allocator))
7214            }
7215        }
7216    }
7217}
7218
7219impl<'new_alloc> CloneIn<'new_alloc> for TSModuleDeclaration<'_> {
7220    type Cloned = TSModuleDeclaration<'new_alloc>;
7221
7222    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7223        TSModuleDeclaration {
7224            span: CloneIn::clone_in(&self.span, allocator),
7225            id: CloneIn::clone_in(&self.id, allocator),
7226            body: CloneIn::clone_in(&self.body, allocator),
7227            kind: CloneIn::clone_in(&self.kind, allocator),
7228            declare: CloneIn::clone_in(&self.declare, allocator),
7229            scope_id: Default::default(),
7230        }
7231    }
7232
7233    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7234        TSModuleDeclaration {
7235            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7236            id: CloneIn::clone_in_with_semantic_ids(&self.id, allocator),
7237            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
7238            kind: CloneIn::clone_in_with_semantic_ids(&self.kind, allocator),
7239            declare: CloneIn::clone_in_with_semantic_ids(&self.declare, allocator),
7240            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
7241        }
7242    }
7243}
7244
7245impl<'new_alloc> CloneIn<'new_alloc> for TSModuleDeclarationKind {
7246    type Cloned = TSModuleDeclarationKind;
7247
7248    #[inline(always)]
7249    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7250        *self
7251    }
7252
7253    #[inline(always)]
7254    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7255        *self
7256    }
7257}
7258
7259impl<'new_alloc> CloneIn<'new_alloc> for TSModuleDeclarationName<'_> {
7260    type Cloned = TSModuleDeclarationName<'new_alloc>;
7261
7262    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7263        match self {
7264            Self::Identifier(it) => {
7265                TSModuleDeclarationName::Identifier(CloneIn::clone_in(it, allocator))
7266            }
7267            Self::StringLiteral(it) => {
7268                TSModuleDeclarationName::StringLiteral(CloneIn::clone_in(it, allocator))
7269            }
7270        }
7271    }
7272
7273    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7274        match self {
7275            Self::Identifier(it) => TSModuleDeclarationName::Identifier(
7276                CloneIn::clone_in_with_semantic_ids(it, allocator),
7277            ),
7278            Self::StringLiteral(it) => TSModuleDeclarationName::StringLiteral(
7279                CloneIn::clone_in_with_semantic_ids(it, allocator),
7280            ),
7281        }
7282    }
7283}
7284
7285impl<'new_alloc> CloneIn<'new_alloc> for TSModuleDeclarationBody<'_> {
7286    type Cloned = TSModuleDeclarationBody<'new_alloc>;
7287
7288    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7289        match self {
7290            Self::TSModuleDeclaration(it) => {
7291                TSModuleDeclarationBody::TSModuleDeclaration(CloneIn::clone_in(it, allocator))
7292            }
7293            Self::TSModuleBlock(it) => {
7294                TSModuleDeclarationBody::TSModuleBlock(CloneIn::clone_in(it, allocator))
7295            }
7296        }
7297    }
7298
7299    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7300        match self {
7301            Self::TSModuleDeclaration(it) => TSModuleDeclarationBody::TSModuleDeclaration(
7302                CloneIn::clone_in_with_semantic_ids(it, allocator),
7303            ),
7304            Self::TSModuleBlock(it) => TSModuleDeclarationBody::TSModuleBlock(
7305                CloneIn::clone_in_with_semantic_ids(it, allocator),
7306            ),
7307        }
7308    }
7309}
7310
7311impl<'new_alloc> CloneIn<'new_alloc> for TSModuleBlock<'_> {
7312    type Cloned = TSModuleBlock<'new_alloc>;
7313
7314    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7315        TSModuleBlock {
7316            span: CloneIn::clone_in(&self.span, allocator),
7317            directives: CloneIn::clone_in(&self.directives, allocator),
7318            body: CloneIn::clone_in(&self.body, allocator),
7319        }
7320    }
7321
7322    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7323        TSModuleBlock {
7324            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7325            directives: CloneIn::clone_in_with_semantic_ids(&self.directives, allocator),
7326            body: CloneIn::clone_in_with_semantic_ids(&self.body, allocator),
7327        }
7328    }
7329}
7330
7331impl<'new_alloc> CloneIn<'new_alloc> for TSTypeLiteral<'_> {
7332    type Cloned = TSTypeLiteral<'new_alloc>;
7333
7334    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7335        TSTypeLiteral {
7336            span: CloneIn::clone_in(&self.span, allocator),
7337            members: CloneIn::clone_in(&self.members, allocator),
7338        }
7339    }
7340
7341    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7342        TSTypeLiteral {
7343            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7344            members: CloneIn::clone_in_with_semantic_ids(&self.members, allocator),
7345        }
7346    }
7347}
7348
7349impl<'new_alloc> CloneIn<'new_alloc> for TSInferType<'_> {
7350    type Cloned = TSInferType<'new_alloc>;
7351
7352    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7353        TSInferType {
7354            span: CloneIn::clone_in(&self.span, allocator),
7355            type_parameter: CloneIn::clone_in(&self.type_parameter, allocator),
7356        }
7357    }
7358
7359    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7360        TSInferType {
7361            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7362            type_parameter: CloneIn::clone_in_with_semantic_ids(&self.type_parameter, allocator),
7363        }
7364    }
7365}
7366
7367impl<'new_alloc> CloneIn<'new_alloc> for TSTypeQuery<'_> {
7368    type Cloned = TSTypeQuery<'new_alloc>;
7369
7370    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7371        TSTypeQuery {
7372            span: CloneIn::clone_in(&self.span, allocator),
7373            expr_name: CloneIn::clone_in(&self.expr_name, allocator),
7374            type_arguments: CloneIn::clone_in(&self.type_arguments, allocator),
7375        }
7376    }
7377
7378    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7379        TSTypeQuery {
7380            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7381            expr_name: CloneIn::clone_in_with_semantic_ids(&self.expr_name, allocator),
7382            type_arguments: CloneIn::clone_in_with_semantic_ids(&self.type_arguments, allocator),
7383        }
7384    }
7385}
7386
7387impl<'new_alloc> CloneIn<'new_alloc> for TSTypeQueryExprName<'_> {
7388    type Cloned = TSTypeQueryExprName<'new_alloc>;
7389
7390    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7391        match self {
7392            Self::TSImportType(it) => {
7393                TSTypeQueryExprName::TSImportType(CloneIn::clone_in(it, allocator))
7394            }
7395            Self::IdentifierReference(it) => {
7396                TSTypeQueryExprName::IdentifierReference(CloneIn::clone_in(it, allocator))
7397            }
7398            Self::QualifiedName(it) => {
7399                TSTypeQueryExprName::QualifiedName(CloneIn::clone_in(it, allocator))
7400            }
7401            Self::ThisExpression(it) => {
7402                TSTypeQueryExprName::ThisExpression(CloneIn::clone_in(it, allocator))
7403            }
7404        }
7405    }
7406
7407    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7408        match self {
7409            Self::TSImportType(it) => TSTypeQueryExprName::TSImportType(
7410                CloneIn::clone_in_with_semantic_ids(it, allocator),
7411            ),
7412            Self::IdentifierReference(it) => TSTypeQueryExprName::IdentifierReference(
7413                CloneIn::clone_in_with_semantic_ids(it, allocator),
7414            ),
7415            Self::QualifiedName(it) => TSTypeQueryExprName::QualifiedName(
7416                CloneIn::clone_in_with_semantic_ids(it, allocator),
7417            ),
7418            Self::ThisExpression(it) => TSTypeQueryExprName::ThisExpression(
7419                CloneIn::clone_in_with_semantic_ids(it, allocator),
7420            ),
7421        }
7422    }
7423}
7424
7425impl<'new_alloc> CloneIn<'new_alloc> for TSImportType<'_> {
7426    type Cloned = TSImportType<'new_alloc>;
7427
7428    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7429        TSImportType {
7430            span: CloneIn::clone_in(&self.span, allocator),
7431            argument: CloneIn::clone_in(&self.argument, allocator),
7432            options: CloneIn::clone_in(&self.options, allocator),
7433            qualifier: CloneIn::clone_in(&self.qualifier, allocator),
7434            type_arguments: CloneIn::clone_in(&self.type_arguments, allocator),
7435        }
7436    }
7437
7438    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7439        TSImportType {
7440            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7441            argument: CloneIn::clone_in_with_semantic_ids(&self.argument, allocator),
7442            options: CloneIn::clone_in_with_semantic_ids(&self.options, allocator),
7443            qualifier: CloneIn::clone_in_with_semantic_ids(&self.qualifier, allocator),
7444            type_arguments: CloneIn::clone_in_with_semantic_ids(&self.type_arguments, allocator),
7445        }
7446    }
7447}
7448
7449impl<'new_alloc> CloneIn<'new_alloc> for TSImportTypeQualifier<'_> {
7450    type Cloned = TSImportTypeQualifier<'new_alloc>;
7451
7452    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7453        match self {
7454            Self::Identifier(it) => {
7455                TSImportTypeQualifier::Identifier(CloneIn::clone_in(it, allocator))
7456            }
7457            Self::QualifiedName(it) => {
7458                TSImportTypeQualifier::QualifiedName(CloneIn::clone_in(it, allocator))
7459            }
7460        }
7461    }
7462
7463    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7464        match self {
7465            Self::Identifier(it) => TSImportTypeQualifier::Identifier(
7466                CloneIn::clone_in_with_semantic_ids(it, allocator),
7467            ),
7468            Self::QualifiedName(it) => TSImportTypeQualifier::QualifiedName(
7469                CloneIn::clone_in_with_semantic_ids(it, allocator),
7470            ),
7471        }
7472    }
7473}
7474
7475impl<'new_alloc> CloneIn<'new_alloc> for TSImportTypeQualifiedName<'_> {
7476    type Cloned = TSImportTypeQualifiedName<'new_alloc>;
7477
7478    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7479        TSImportTypeQualifiedName {
7480            span: CloneIn::clone_in(&self.span, allocator),
7481            left: CloneIn::clone_in(&self.left, allocator),
7482            right: CloneIn::clone_in(&self.right, allocator),
7483        }
7484    }
7485
7486    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7487        TSImportTypeQualifiedName {
7488            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7489            left: CloneIn::clone_in_with_semantic_ids(&self.left, allocator),
7490            right: CloneIn::clone_in_with_semantic_ids(&self.right, allocator),
7491        }
7492    }
7493}
7494
7495impl<'new_alloc> CloneIn<'new_alloc> for TSFunctionType<'_> {
7496    type Cloned = TSFunctionType<'new_alloc>;
7497
7498    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7499        TSFunctionType {
7500            span: CloneIn::clone_in(&self.span, allocator),
7501            type_parameters: CloneIn::clone_in(&self.type_parameters, allocator),
7502            this_param: CloneIn::clone_in(&self.this_param, allocator),
7503            params: CloneIn::clone_in(&self.params, allocator),
7504            return_type: CloneIn::clone_in(&self.return_type, allocator),
7505            scope_id: Default::default(),
7506        }
7507    }
7508
7509    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7510        TSFunctionType {
7511            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7512            type_parameters: CloneIn::clone_in_with_semantic_ids(&self.type_parameters, allocator),
7513            this_param: CloneIn::clone_in_with_semantic_ids(&self.this_param, allocator),
7514            params: CloneIn::clone_in_with_semantic_ids(&self.params, allocator),
7515            return_type: CloneIn::clone_in_with_semantic_ids(&self.return_type, allocator),
7516            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
7517        }
7518    }
7519}
7520
7521impl<'new_alloc> CloneIn<'new_alloc> for TSConstructorType<'_> {
7522    type Cloned = TSConstructorType<'new_alloc>;
7523
7524    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7525        TSConstructorType {
7526            span: CloneIn::clone_in(&self.span, allocator),
7527            r#abstract: CloneIn::clone_in(&self.r#abstract, allocator),
7528            type_parameters: CloneIn::clone_in(&self.type_parameters, allocator),
7529            params: CloneIn::clone_in(&self.params, allocator),
7530            return_type: CloneIn::clone_in(&self.return_type, allocator),
7531        }
7532    }
7533
7534    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7535        TSConstructorType {
7536            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7537            r#abstract: CloneIn::clone_in_with_semantic_ids(&self.r#abstract, allocator),
7538            type_parameters: CloneIn::clone_in_with_semantic_ids(&self.type_parameters, allocator),
7539            params: CloneIn::clone_in_with_semantic_ids(&self.params, allocator),
7540            return_type: CloneIn::clone_in_with_semantic_ids(&self.return_type, allocator),
7541        }
7542    }
7543}
7544
7545impl<'new_alloc> CloneIn<'new_alloc> for TSMappedType<'_> {
7546    type Cloned = TSMappedType<'new_alloc>;
7547
7548    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7549        TSMappedType {
7550            span: CloneIn::clone_in(&self.span, allocator),
7551            type_parameter: CloneIn::clone_in(&self.type_parameter, allocator),
7552            name_type: CloneIn::clone_in(&self.name_type, allocator),
7553            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
7554            optional: CloneIn::clone_in(&self.optional, allocator),
7555            readonly: CloneIn::clone_in(&self.readonly, allocator),
7556            scope_id: Default::default(),
7557        }
7558    }
7559
7560    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7561        TSMappedType {
7562            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7563            type_parameter: CloneIn::clone_in_with_semantic_ids(&self.type_parameter, allocator),
7564            name_type: CloneIn::clone_in_with_semantic_ids(&self.name_type, allocator),
7565            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
7566            optional: CloneIn::clone_in_with_semantic_ids(&self.optional, allocator),
7567            readonly: CloneIn::clone_in_with_semantic_ids(&self.readonly, allocator),
7568            scope_id: CloneIn::clone_in_with_semantic_ids(&self.scope_id, allocator),
7569        }
7570    }
7571}
7572
7573impl<'new_alloc> CloneIn<'new_alloc> for TSMappedTypeModifierOperator {
7574    type Cloned = TSMappedTypeModifierOperator;
7575
7576    #[inline(always)]
7577    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7578        *self
7579    }
7580
7581    #[inline(always)]
7582    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7583        *self
7584    }
7585}
7586
7587impl<'new_alloc> CloneIn<'new_alloc> for TSTemplateLiteralType<'_> {
7588    type Cloned = TSTemplateLiteralType<'new_alloc>;
7589
7590    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7591        TSTemplateLiteralType {
7592            span: CloneIn::clone_in(&self.span, allocator),
7593            quasis: CloneIn::clone_in(&self.quasis, allocator),
7594            types: CloneIn::clone_in(&self.types, allocator),
7595        }
7596    }
7597
7598    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7599        TSTemplateLiteralType {
7600            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7601            quasis: CloneIn::clone_in_with_semantic_ids(&self.quasis, allocator),
7602            types: CloneIn::clone_in_with_semantic_ids(&self.types, allocator),
7603        }
7604    }
7605}
7606
7607impl<'new_alloc> CloneIn<'new_alloc> for TSAsExpression<'_> {
7608    type Cloned = TSAsExpression<'new_alloc>;
7609
7610    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7611        TSAsExpression {
7612            span: CloneIn::clone_in(&self.span, allocator),
7613            expression: CloneIn::clone_in(&self.expression, allocator),
7614            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
7615        }
7616    }
7617
7618    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7619        TSAsExpression {
7620            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7621            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
7622            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
7623        }
7624    }
7625}
7626
7627impl<'new_alloc> CloneIn<'new_alloc> for TSSatisfiesExpression<'_> {
7628    type Cloned = TSSatisfiesExpression<'new_alloc>;
7629
7630    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7631        TSSatisfiesExpression {
7632            span: CloneIn::clone_in(&self.span, allocator),
7633            expression: CloneIn::clone_in(&self.expression, allocator),
7634            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
7635        }
7636    }
7637
7638    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7639        TSSatisfiesExpression {
7640            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7641            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
7642            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
7643        }
7644    }
7645}
7646
7647impl<'new_alloc> CloneIn<'new_alloc> for TSTypeAssertion<'_> {
7648    type Cloned = TSTypeAssertion<'new_alloc>;
7649
7650    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7651        TSTypeAssertion {
7652            span: CloneIn::clone_in(&self.span, allocator),
7653            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
7654            expression: CloneIn::clone_in(&self.expression, allocator),
7655        }
7656    }
7657
7658    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7659        TSTypeAssertion {
7660            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7661            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
7662            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
7663        }
7664    }
7665}
7666
7667impl<'new_alloc> CloneIn<'new_alloc> for TSImportEqualsDeclaration<'_> {
7668    type Cloned = TSImportEqualsDeclaration<'new_alloc>;
7669
7670    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7671        TSImportEqualsDeclaration {
7672            span: CloneIn::clone_in(&self.span, allocator),
7673            id: CloneIn::clone_in(&self.id, allocator),
7674            module_reference: CloneIn::clone_in(&self.module_reference, allocator),
7675            import_kind: CloneIn::clone_in(&self.import_kind, allocator),
7676        }
7677    }
7678
7679    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7680        TSImportEqualsDeclaration {
7681            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7682            id: CloneIn::clone_in_with_semantic_ids(&self.id, allocator),
7683            module_reference: CloneIn::clone_in_with_semantic_ids(
7684                &self.module_reference,
7685                allocator,
7686            ),
7687            import_kind: CloneIn::clone_in_with_semantic_ids(&self.import_kind, allocator),
7688        }
7689    }
7690}
7691
7692impl<'new_alloc> CloneIn<'new_alloc> for TSModuleReference<'_> {
7693    type Cloned = TSModuleReference<'new_alloc>;
7694
7695    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7696        match self {
7697            Self::ExternalModuleReference(it) => {
7698                TSModuleReference::ExternalModuleReference(CloneIn::clone_in(it, allocator))
7699            }
7700            Self::IdentifierReference(it) => {
7701                TSModuleReference::IdentifierReference(CloneIn::clone_in(it, allocator))
7702            }
7703            Self::QualifiedName(it) => {
7704                TSModuleReference::QualifiedName(CloneIn::clone_in(it, allocator))
7705            }
7706            Self::ThisExpression(it) => {
7707                TSModuleReference::ThisExpression(CloneIn::clone_in(it, allocator))
7708            }
7709        }
7710    }
7711
7712    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7713        match self {
7714            Self::ExternalModuleReference(it) => TSModuleReference::ExternalModuleReference(
7715                CloneIn::clone_in_with_semantic_ids(it, allocator),
7716            ),
7717            Self::IdentifierReference(it) => TSModuleReference::IdentifierReference(
7718                CloneIn::clone_in_with_semantic_ids(it, allocator),
7719            ),
7720            Self::QualifiedName(it) => {
7721                TSModuleReference::QualifiedName(CloneIn::clone_in_with_semantic_ids(it, allocator))
7722            }
7723            Self::ThisExpression(it) => TSModuleReference::ThisExpression(
7724                CloneIn::clone_in_with_semantic_ids(it, allocator),
7725            ),
7726        }
7727    }
7728}
7729
7730impl<'new_alloc> CloneIn<'new_alloc> for TSExternalModuleReference<'_> {
7731    type Cloned = TSExternalModuleReference<'new_alloc>;
7732
7733    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7734        TSExternalModuleReference {
7735            span: CloneIn::clone_in(&self.span, allocator),
7736            expression: CloneIn::clone_in(&self.expression, allocator),
7737        }
7738    }
7739
7740    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7741        TSExternalModuleReference {
7742            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7743            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
7744        }
7745    }
7746}
7747
7748impl<'new_alloc> CloneIn<'new_alloc> for TSNonNullExpression<'_> {
7749    type Cloned = TSNonNullExpression<'new_alloc>;
7750
7751    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7752        TSNonNullExpression {
7753            span: CloneIn::clone_in(&self.span, allocator),
7754            expression: CloneIn::clone_in(&self.expression, allocator),
7755        }
7756    }
7757
7758    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7759        TSNonNullExpression {
7760            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7761            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
7762        }
7763    }
7764}
7765
7766impl<'new_alloc> CloneIn<'new_alloc> for Decorator<'_> {
7767    type Cloned = Decorator<'new_alloc>;
7768
7769    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7770        Decorator {
7771            span: CloneIn::clone_in(&self.span, allocator),
7772            expression: CloneIn::clone_in(&self.expression, allocator),
7773        }
7774    }
7775
7776    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7777        Decorator {
7778            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7779            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
7780        }
7781    }
7782}
7783
7784impl<'new_alloc> CloneIn<'new_alloc> for TSExportAssignment<'_> {
7785    type Cloned = TSExportAssignment<'new_alloc>;
7786
7787    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7788        TSExportAssignment {
7789            span: CloneIn::clone_in(&self.span, allocator),
7790            expression: CloneIn::clone_in(&self.expression, allocator),
7791        }
7792    }
7793
7794    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7795        TSExportAssignment {
7796            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7797            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
7798        }
7799    }
7800}
7801
7802impl<'new_alloc> CloneIn<'new_alloc> for TSNamespaceExportDeclaration<'_> {
7803    type Cloned = TSNamespaceExportDeclaration<'new_alloc>;
7804
7805    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7806        TSNamespaceExportDeclaration {
7807            span: CloneIn::clone_in(&self.span, allocator),
7808            id: CloneIn::clone_in(&self.id, allocator),
7809        }
7810    }
7811
7812    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7813        TSNamespaceExportDeclaration {
7814            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7815            id: CloneIn::clone_in_with_semantic_ids(&self.id, allocator),
7816        }
7817    }
7818}
7819
7820impl<'new_alloc> CloneIn<'new_alloc> for TSInstantiationExpression<'_> {
7821    type Cloned = TSInstantiationExpression<'new_alloc>;
7822
7823    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7824        TSInstantiationExpression {
7825            span: CloneIn::clone_in(&self.span, allocator),
7826            expression: CloneIn::clone_in(&self.expression, allocator),
7827            type_arguments: CloneIn::clone_in(&self.type_arguments, allocator),
7828        }
7829    }
7830
7831    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7832        TSInstantiationExpression {
7833            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7834            expression: CloneIn::clone_in_with_semantic_ids(&self.expression, allocator),
7835            type_arguments: CloneIn::clone_in_with_semantic_ids(&self.type_arguments, allocator),
7836        }
7837    }
7838}
7839
7840impl<'new_alloc> CloneIn<'new_alloc> for ImportOrExportKind {
7841    type Cloned = ImportOrExportKind;
7842
7843    #[inline(always)]
7844    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7845        *self
7846    }
7847
7848    #[inline(always)]
7849    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7850        *self
7851    }
7852}
7853
7854impl<'new_alloc> CloneIn<'new_alloc> for JSDocNullableType<'_> {
7855    type Cloned = JSDocNullableType<'new_alloc>;
7856
7857    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7858        JSDocNullableType {
7859            span: CloneIn::clone_in(&self.span, allocator),
7860            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
7861            postfix: CloneIn::clone_in(&self.postfix, allocator),
7862        }
7863    }
7864
7865    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7866        JSDocNullableType {
7867            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7868            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
7869            postfix: CloneIn::clone_in_with_semantic_ids(&self.postfix, allocator),
7870        }
7871    }
7872}
7873
7874impl<'new_alloc> CloneIn<'new_alloc> for JSDocNonNullableType<'_> {
7875    type Cloned = JSDocNonNullableType<'new_alloc>;
7876
7877    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7878        JSDocNonNullableType {
7879            span: CloneIn::clone_in(&self.span, allocator),
7880            type_annotation: CloneIn::clone_in(&self.type_annotation, allocator),
7881            postfix: CloneIn::clone_in(&self.postfix, allocator),
7882        }
7883    }
7884
7885    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7886        JSDocNonNullableType {
7887            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7888            type_annotation: CloneIn::clone_in_with_semantic_ids(&self.type_annotation, allocator),
7889            postfix: CloneIn::clone_in_with_semantic_ids(&self.postfix, allocator),
7890        }
7891    }
7892}
7893
7894impl<'new_alloc> CloneIn<'new_alloc> for JSDocUnknownType {
7895    type Cloned = JSDocUnknownType;
7896
7897    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7898        JSDocUnknownType { span: CloneIn::clone_in(&self.span, allocator) }
7899    }
7900
7901    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7902        JSDocUnknownType { span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator) }
7903    }
7904}
7905
7906impl<'new_alloc> CloneIn<'new_alloc> for CommentKind {
7907    type Cloned = CommentKind;
7908
7909    #[inline(always)]
7910    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7911        *self
7912    }
7913
7914    #[inline(always)]
7915    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7916        *self
7917    }
7918}
7919
7920impl<'new_alloc> CloneIn<'new_alloc> for CommentPosition {
7921    type Cloned = CommentPosition;
7922
7923    #[inline(always)]
7924    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7925        *self
7926    }
7927
7928    #[inline(always)]
7929    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7930        *self
7931    }
7932}
7933
7934impl<'new_alloc> CloneIn<'new_alloc> for CommentContent {
7935    type Cloned = CommentContent;
7936
7937    #[inline(always)]
7938    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7939        *self
7940    }
7941
7942    #[inline(always)]
7943    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7944        *self
7945    }
7946}
7947
7948impl<'new_alloc> CloneIn<'new_alloc> for Comment {
7949    type Cloned = Comment;
7950
7951    fn clone_in(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7952        Comment {
7953            span: CloneIn::clone_in(&self.span, allocator),
7954            attached_to: CloneIn::clone_in(&self.attached_to, allocator),
7955            kind: CloneIn::clone_in(&self.kind, allocator),
7956            position: CloneIn::clone_in(&self.position, allocator),
7957            newlines: CloneIn::clone_in(&self.newlines, allocator),
7958            content: CloneIn::clone_in(&self.content, allocator),
7959        }
7960    }
7961
7962    fn clone_in_with_semantic_ids(&self, allocator: &'new_alloc Allocator) -> Self::Cloned {
7963        Comment {
7964            span: CloneIn::clone_in_with_semantic_ids(&self.span, allocator),
7965            attached_to: CloneIn::clone_in_with_semantic_ids(&self.attached_to, allocator),
7966            kind: CloneIn::clone_in_with_semantic_ids(&self.kind, allocator),
7967            position: CloneIn::clone_in_with_semantic_ids(&self.position, allocator),
7968            newlines: CloneIn::clone_in_with_semantic_ids(&self.newlines, allocator),
7969            content: CloneIn::clone_in_with_semantic_ids(&self.content, allocator),
7970        }
7971    }
7972}