oxc_ast/generated/
derive_dummy.rs

1// Auto-generated code, DO NOT EDIT DIRECTLY!
2// To edit this generated file you have to edit `tasks/ast_tools/src/derives/dummy.rs`.
3
4#![allow(unused_variables, clippy::inline_always)]
5
6use oxc_allocator::{Allocator, Dummy};
7
8use crate::ast::js::*;
9use crate::ast::jsx::*;
10use crate::ast::literal::*;
11use crate::ast::ts::*;
12
13impl<'a> Dummy<'a> for Program<'a> {
14    /// Create a dummy [`Program`].
15    ///
16    /// Does not allocate any data into arena.
17    fn dummy(allocator: &'a Allocator) -> Self {
18        Self {
19            span: Dummy::dummy(allocator),
20            source_type: Dummy::dummy(allocator),
21            source_text: Dummy::dummy(allocator),
22            comments: Dummy::dummy(allocator),
23            hashbang: Dummy::dummy(allocator),
24            directives: Dummy::dummy(allocator),
25            body: Dummy::dummy(allocator),
26            scope_id: Dummy::dummy(allocator),
27        }
28    }
29}
30
31impl<'a> Dummy<'a> for Expression<'a> {
32    /// Create a dummy [`Expression`].
33    ///
34    /// Has cost of making 1 allocation (8 bytes).
35    fn dummy(allocator: &'a Allocator) -> Self {
36        Self::NullLiteral(Dummy::dummy(allocator))
37    }
38}
39
40impl<'a> Dummy<'a> for IdentifierName<'a> {
41    /// Create a dummy [`IdentifierName`].
42    ///
43    /// Does not allocate any data into arena.
44    fn dummy(allocator: &'a Allocator) -> Self {
45        Self { span: Dummy::dummy(allocator), name: Dummy::dummy(allocator) }
46    }
47}
48
49impl<'a> Dummy<'a> for IdentifierReference<'a> {
50    /// Create a dummy [`IdentifierReference`].
51    ///
52    /// Does not allocate any data into arena.
53    fn dummy(allocator: &'a Allocator) -> Self {
54        Self {
55            span: Dummy::dummy(allocator),
56            name: Dummy::dummy(allocator),
57            reference_id: Dummy::dummy(allocator),
58        }
59    }
60}
61
62impl<'a> Dummy<'a> for BindingIdentifier<'a> {
63    /// Create a dummy [`BindingIdentifier`].
64    ///
65    /// Does not allocate any data into arena.
66    fn dummy(allocator: &'a Allocator) -> Self {
67        Self {
68            span: Dummy::dummy(allocator),
69            name: Dummy::dummy(allocator),
70            symbol_id: Dummy::dummy(allocator),
71        }
72    }
73}
74
75impl<'a> Dummy<'a> for LabelIdentifier<'a> {
76    /// Create a dummy [`LabelIdentifier`].
77    ///
78    /// Does not allocate any data into arena.
79    fn dummy(allocator: &'a Allocator) -> Self {
80        Self { span: Dummy::dummy(allocator), name: Dummy::dummy(allocator) }
81    }
82}
83
84impl<'a> Dummy<'a> for ThisExpression {
85    /// Create a dummy [`ThisExpression`].
86    ///
87    /// Does not allocate any data into arena.
88    fn dummy(allocator: &'a Allocator) -> Self {
89        Self { span: Dummy::dummy(allocator) }
90    }
91}
92
93impl<'a> Dummy<'a> for ArrayExpression<'a> {
94    /// Create a dummy [`ArrayExpression`].
95    ///
96    /// Does not allocate any data into arena.
97    fn dummy(allocator: &'a Allocator) -> Self {
98        Self { span: Dummy::dummy(allocator), elements: Dummy::dummy(allocator) }
99    }
100}
101
102impl<'a> Dummy<'a> for ArrayExpressionElement<'a> {
103    /// Create a dummy [`ArrayExpressionElement`].
104    ///
105    /// Does not allocate any data into arena.
106    fn dummy(allocator: &'a Allocator) -> Self {
107        Self::Elision(Dummy::dummy(allocator))
108    }
109}
110
111impl<'a> Dummy<'a> for Elision {
112    /// Create a dummy [`Elision`].
113    ///
114    /// Does not allocate any data into arena.
115    fn dummy(allocator: &'a Allocator) -> Self {
116        Self { span: Dummy::dummy(allocator) }
117    }
118}
119
120impl<'a> Dummy<'a> for ObjectExpression<'a> {
121    /// Create a dummy [`ObjectExpression`].
122    ///
123    /// Does not allocate any data into arena.
124    fn dummy(allocator: &'a Allocator) -> Self {
125        Self { span: Dummy::dummy(allocator), properties: Dummy::dummy(allocator) }
126    }
127}
128
129impl<'a> Dummy<'a> for ObjectPropertyKind<'a> {
130    /// Create a dummy [`ObjectPropertyKind`].
131    ///
132    /// Has cost of making 2 allocations (32 bytes).
133    fn dummy(allocator: &'a Allocator) -> Self {
134        Self::SpreadProperty(Dummy::dummy(allocator))
135    }
136}
137
138impl<'a> Dummy<'a> for ObjectProperty<'a> {
139    /// Create a dummy [`ObjectProperty`].
140    ///
141    /// Has cost of making 2 allocations (16 bytes).
142    fn dummy(allocator: &'a Allocator) -> Self {
143        Self {
144            span: Dummy::dummy(allocator),
145            kind: Dummy::dummy(allocator),
146            key: Dummy::dummy(allocator),
147            value: Dummy::dummy(allocator),
148            method: Dummy::dummy(allocator),
149            shorthand: Dummy::dummy(allocator),
150            computed: Dummy::dummy(allocator),
151        }
152    }
153}
154
155impl<'a> Dummy<'a> for PropertyKey<'a> {
156    /// Create a dummy [`PropertyKey`].
157    ///
158    /// Has cost of making 1 allocation (8 bytes).
159    fn dummy(allocator: &'a Allocator) -> Self {
160        Self::NullLiteral(Dummy::dummy(allocator))
161    }
162}
163
164impl<'a> Dummy<'a> for PropertyKind {
165    /// Create a dummy [`PropertyKind`].
166    ///
167    /// Does not allocate any data into arena.
168    #[inline(always)]
169    fn dummy(allocator: &'a Allocator) -> Self {
170        Self::Init
171    }
172}
173
174impl<'a> Dummy<'a> for TemplateLiteral<'a> {
175    /// Create a dummy [`TemplateLiteral`].
176    ///
177    /// Does not allocate any data into arena.
178    fn dummy(allocator: &'a Allocator) -> Self {
179        Self {
180            span: Dummy::dummy(allocator),
181            quasis: Dummy::dummy(allocator),
182            expressions: Dummy::dummy(allocator),
183        }
184    }
185}
186
187impl<'a> Dummy<'a> for TaggedTemplateExpression<'a> {
188    /// Create a dummy [`TaggedTemplateExpression`].
189    ///
190    /// Has cost of making 1 allocation (8 bytes).
191    fn dummy(allocator: &'a Allocator) -> Self {
192        Self {
193            span: Dummy::dummy(allocator),
194            tag: Dummy::dummy(allocator),
195            type_arguments: Dummy::dummy(allocator),
196            quasi: Dummy::dummy(allocator),
197        }
198    }
199}
200
201impl<'a> Dummy<'a> for TemplateElement<'a> {
202    /// Create a dummy [`TemplateElement`].
203    ///
204    /// Does not allocate any data into arena.
205    fn dummy(allocator: &'a Allocator) -> Self {
206        Self {
207            span: Dummy::dummy(allocator),
208            value: Dummy::dummy(allocator),
209            tail: Dummy::dummy(allocator),
210            lone_surrogates: Dummy::dummy(allocator),
211        }
212    }
213}
214
215impl<'a> Dummy<'a> for TemplateElementValue<'a> {
216    /// Create a dummy [`TemplateElementValue`].
217    ///
218    /// Does not allocate any data into arena.
219    fn dummy(allocator: &'a Allocator) -> Self {
220        Self { raw: Dummy::dummy(allocator), cooked: Dummy::dummy(allocator) }
221    }
222}
223
224impl<'a> Dummy<'a> for MemberExpression<'a> {
225    /// Create a dummy [`MemberExpression`].
226    ///
227    /// Has cost of making 2 allocations (64 bytes).
228    fn dummy(allocator: &'a Allocator) -> Self {
229        Self::StaticMemberExpression(Dummy::dummy(allocator))
230    }
231}
232
233impl<'a> Dummy<'a> for ComputedMemberExpression<'a> {
234    /// Create a dummy [`ComputedMemberExpression`].
235    ///
236    /// Has cost of making 2 allocations (16 bytes).
237    fn dummy(allocator: &'a Allocator) -> Self {
238        Self {
239            span: Dummy::dummy(allocator),
240            object: Dummy::dummy(allocator),
241            expression: Dummy::dummy(allocator),
242            optional: Dummy::dummy(allocator),
243        }
244    }
245}
246
247impl<'a> Dummy<'a> for StaticMemberExpression<'a> {
248    /// Create a dummy [`StaticMemberExpression`].
249    ///
250    /// Has cost of making 1 allocation (8 bytes).
251    fn dummy(allocator: &'a Allocator) -> Self {
252        Self {
253            span: Dummy::dummy(allocator),
254            object: Dummy::dummy(allocator),
255            property: Dummy::dummy(allocator),
256            optional: Dummy::dummy(allocator),
257        }
258    }
259}
260
261impl<'a> Dummy<'a> for PrivateFieldExpression<'a> {
262    /// Create a dummy [`PrivateFieldExpression`].
263    ///
264    /// Has cost of making 1 allocation (8 bytes).
265    fn dummy(allocator: &'a Allocator) -> Self {
266        Self {
267            span: Dummy::dummy(allocator),
268            object: Dummy::dummy(allocator),
269            field: Dummy::dummy(allocator),
270            optional: Dummy::dummy(allocator),
271        }
272    }
273}
274
275impl<'a> Dummy<'a> for CallExpression<'a> {
276    /// Create a dummy [`CallExpression`].
277    ///
278    /// Has cost of making 1 allocation (8 bytes).
279    fn dummy(allocator: &'a Allocator) -> Self {
280        Self {
281            span: Dummy::dummy(allocator),
282            callee: Dummy::dummy(allocator),
283            type_arguments: Dummy::dummy(allocator),
284            arguments: Dummy::dummy(allocator),
285            optional: Dummy::dummy(allocator),
286            pure: Dummy::dummy(allocator),
287        }
288    }
289}
290
291impl<'a> Dummy<'a> for NewExpression<'a> {
292    /// Create a dummy [`NewExpression`].
293    ///
294    /// Has cost of making 1 allocation (8 bytes).
295    fn dummy(allocator: &'a Allocator) -> Self {
296        Self {
297            span: Dummy::dummy(allocator),
298            callee: Dummy::dummy(allocator),
299            type_arguments: Dummy::dummy(allocator),
300            arguments: Dummy::dummy(allocator),
301            pure: Dummy::dummy(allocator),
302        }
303    }
304}
305
306impl<'a> Dummy<'a> for MetaProperty<'a> {
307    /// Create a dummy [`MetaProperty`].
308    ///
309    /// Does not allocate any data into arena.
310    fn dummy(allocator: &'a Allocator) -> Self {
311        Self {
312            span: Dummy::dummy(allocator),
313            meta: Dummy::dummy(allocator),
314            property: Dummy::dummy(allocator),
315        }
316    }
317}
318
319impl<'a> Dummy<'a> for SpreadElement<'a> {
320    /// Create a dummy [`SpreadElement`].
321    ///
322    /// Has cost of making 1 allocation (8 bytes).
323    fn dummy(allocator: &'a Allocator) -> Self {
324        Self { span: Dummy::dummy(allocator), argument: Dummy::dummy(allocator) }
325    }
326}
327
328impl<'a> Dummy<'a> for Argument<'a> {
329    /// Create a dummy [`Argument`].
330    ///
331    /// Has cost of making 1 allocation (8 bytes).
332    fn dummy(allocator: &'a Allocator) -> Self {
333        Self::NullLiteral(Dummy::dummy(allocator))
334    }
335}
336
337impl<'a> Dummy<'a> for UpdateExpression<'a> {
338    /// Create a dummy [`UpdateExpression`].
339    ///
340    /// Has cost of making 1 allocation (32 bytes).
341    fn dummy(allocator: &'a Allocator) -> Self {
342        Self {
343            span: Dummy::dummy(allocator),
344            operator: Dummy::dummy(allocator),
345            prefix: Dummy::dummy(allocator),
346            argument: Dummy::dummy(allocator),
347        }
348    }
349}
350
351impl<'a> Dummy<'a> for UnaryExpression<'a> {
352    /// Create a dummy [`UnaryExpression`].
353    ///
354    /// Has cost of making 1 allocation (8 bytes).
355    fn dummy(allocator: &'a Allocator) -> Self {
356        Self {
357            span: Dummy::dummy(allocator),
358            operator: Dummy::dummy(allocator),
359            argument: Dummy::dummy(allocator),
360        }
361    }
362}
363
364impl<'a> Dummy<'a> for BinaryExpression<'a> {
365    /// Create a dummy [`BinaryExpression`].
366    ///
367    /// Has cost of making 2 allocations (16 bytes).
368    fn dummy(allocator: &'a Allocator) -> Self {
369        Self {
370            span: Dummy::dummy(allocator),
371            left: Dummy::dummy(allocator),
372            operator: Dummy::dummy(allocator),
373            right: Dummy::dummy(allocator),
374        }
375    }
376}
377
378impl<'a> Dummy<'a> for PrivateInExpression<'a> {
379    /// Create a dummy [`PrivateInExpression`].
380    ///
381    /// Has cost of making 1 allocation (8 bytes).
382    fn dummy(allocator: &'a Allocator) -> Self {
383        Self {
384            span: Dummy::dummy(allocator),
385            left: Dummy::dummy(allocator),
386            right: Dummy::dummy(allocator),
387        }
388    }
389}
390
391impl<'a> Dummy<'a> for LogicalExpression<'a> {
392    /// Create a dummy [`LogicalExpression`].
393    ///
394    /// Has cost of making 2 allocations (16 bytes).
395    fn dummy(allocator: &'a Allocator) -> Self {
396        Self {
397            span: Dummy::dummy(allocator),
398            left: Dummy::dummy(allocator),
399            operator: Dummy::dummy(allocator),
400            right: Dummy::dummy(allocator),
401        }
402    }
403}
404
405impl<'a> Dummy<'a> for ConditionalExpression<'a> {
406    /// Create a dummy [`ConditionalExpression`].
407    ///
408    /// Has cost of making 3 allocations (24 bytes).
409    fn dummy(allocator: &'a Allocator) -> Self {
410        Self {
411            span: Dummy::dummy(allocator),
412            test: Dummy::dummy(allocator),
413            consequent: Dummy::dummy(allocator),
414            alternate: Dummy::dummy(allocator),
415        }
416    }
417}
418
419impl<'a> Dummy<'a> for AssignmentExpression<'a> {
420    /// Create a dummy [`AssignmentExpression`].
421    ///
422    /// Has cost of making 2 allocations (40 bytes).
423    fn dummy(allocator: &'a Allocator) -> Self {
424        Self {
425            span: Dummy::dummy(allocator),
426            operator: Dummy::dummy(allocator),
427            left: Dummy::dummy(allocator),
428            right: Dummy::dummy(allocator),
429        }
430    }
431}
432
433impl<'a> Dummy<'a> for AssignmentTarget<'a> {
434    /// Create a dummy [`AssignmentTarget`].
435    ///
436    /// Has cost of making 1 allocation (32 bytes).
437    fn dummy(allocator: &'a Allocator) -> Self {
438        Self::AssignmentTargetIdentifier(Dummy::dummy(allocator))
439    }
440}
441
442impl<'a> Dummy<'a> for SimpleAssignmentTarget<'a> {
443    /// Create a dummy [`SimpleAssignmentTarget`].
444    ///
445    /// Has cost of making 1 allocation (32 bytes).
446    fn dummy(allocator: &'a Allocator) -> Self {
447        Self::AssignmentTargetIdentifier(Dummy::dummy(allocator))
448    }
449}
450
451impl<'a> Dummy<'a> for AssignmentTargetPattern<'a> {
452    /// Create a dummy [`AssignmentTargetPattern`].
453    ///
454    /// Has cost of making 1 allocation (40 bytes).
455    fn dummy(allocator: &'a Allocator) -> Self {
456        Self::ArrayAssignmentTarget(Dummy::dummy(allocator))
457    }
458}
459
460impl<'a> Dummy<'a> for ArrayAssignmentTarget<'a> {
461    /// Create a dummy [`ArrayAssignmentTarget`].
462    ///
463    /// Does not allocate any data into arena.
464    fn dummy(allocator: &'a Allocator) -> Self {
465        Self {
466            span: Dummy::dummy(allocator),
467            elements: Dummy::dummy(allocator),
468            rest: Dummy::dummy(allocator),
469        }
470    }
471}
472
473impl<'a> Dummy<'a> for ObjectAssignmentTarget<'a> {
474    /// Create a dummy [`ObjectAssignmentTarget`].
475    ///
476    /// Does not allocate any data into arena.
477    fn dummy(allocator: &'a Allocator) -> Self {
478        Self {
479            span: Dummy::dummy(allocator),
480            properties: Dummy::dummy(allocator),
481            rest: Dummy::dummy(allocator),
482        }
483    }
484}
485
486impl<'a> Dummy<'a> for AssignmentTargetRest<'a> {
487    /// Create a dummy [`AssignmentTargetRest`].
488    ///
489    /// Has cost of making 1 allocation (32 bytes).
490    fn dummy(allocator: &'a Allocator) -> Self {
491        Self { span: Dummy::dummy(allocator), target: Dummy::dummy(allocator) }
492    }
493}
494
495impl<'a> Dummy<'a> for AssignmentTargetMaybeDefault<'a> {
496    /// Create a dummy [`AssignmentTargetMaybeDefault`].
497    ///
498    /// Has cost of making 1 allocation (32 bytes).
499    fn dummy(allocator: &'a Allocator) -> Self {
500        Self::AssignmentTargetIdentifier(Dummy::dummy(allocator))
501    }
502}
503
504impl<'a> Dummy<'a> for AssignmentTargetWithDefault<'a> {
505    /// Create a dummy [`AssignmentTargetWithDefault`].
506    ///
507    /// Has cost of making 2 allocations (40 bytes).
508    fn dummy(allocator: &'a Allocator) -> Self {
509        Self {
510            span: Dummy::dummy(allocator),
511            binding: Dummy::dummy(allocator),
512            init: Dummy::dummy(allocator),
513        }
514    }
515}
516
517impl<'a> Dummy<'a> for AssignmentTargetProperty<'a> {
518    /// Create a dummy [`AssignmentTargetProperty`].
519    ///
520    /// Has cost of making 1 allocation (56 bytes).
521    fn dummy(allocator: &'a Allocator) -> Self {
522        Self::AssignmentTargetPropertyIdentifier(Dummy::dummy(allocator))
523    }
524}
525
526impl<'a> Dummy<'a> for AssignmentTargetPropertyIdentifier<'a> {
527    /// Create a dummy [`AssignmentTargetPropertyIdentifier`].
528    ///
529    /// Does not allocate any data into arena.
530    fn dummy(allocator: &'a Allocator) -> Self {
531        Self {
532            span: Dummy::dummy(allocator),
533            binding: Dummy::dummy(allocator),
534            init: Dummy::dummy(allocator),
535        }
536    }
537}
538
539impl<'a> Dummy<'a> for AssignmentTargetPropertyProperty<'a> {
540    /// Create a dummy [`AssignmentTargetPropertyProperty`].
541    ///
542    /// Has cost of making 2 allocations (40 bytes).
543    fn dummy(allocator: &'a Allocator) -> Self {
544        Self {
545            span: Dummy::dummy(allocator),
546            name: Dummy::dummy(allocator),
547            binding: Dummy::dummy(allocator),
548            computed: Dummy::dummy(allocator),
549        }
550    }
551}
552
553impl<'a> Dummy<'a> for SequenceExpression<'a> {
554    /// Create a dummy [`SequenceExpression`].
555    ///
556    /// Does not allocate any data into arena.
557    fn dummy(allocator: &'a Allocator) -> Self {
558        Self { span: Dummy::dummy(allocator), expressions: Dummy::dummy(allocator) }
559    }
560}
561
562impl<'a> Dummy<'a> for Super {
563    /// Create a dummy [`Super`].
564    ///
565    /// Does not allocate any data into arena.
566    fn dummy(allocator: &'a Allocator) -> Self {
567        Self { span: Dummy::dummy(allocator) }
568    }
569}
570
571impl<'a> Dummy<'a> for AwaitExpression<'a> {
572    /// Create a dummy [`AwaitExpression`].
573    ///
574    /// Has cost of making 1 allocation (8 bytes).
575    fn dummy(allocator: &'a Allocator) -> Self {
576        Self { span: Dummy::dummy(allocator), argument: Dummy::dummy(allocator) }
577    }
578}
579
580impl<'a> Dummy<'a> for ChainExpression<'a> {
581    /// Create a dummy [`ChainExpression`].
582    ///
583    /// Has cost of making 2 allocations (32 bytes).
584    fn dummy(allocator: &'a Allocator) -> Self {
585        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
586    }
587}
588
589impl<'a> Dummy<'a> for ChainElement<'a> {
590    /// Create a dummy [`ChainElement`].
591    ///
592    /// Has cost of making 2 allocations (32 bytes).
593    fn dummy(allocator: &'a Allocator) -> Self {
594        Self::TSNonNullExpression(Dummy::dummy(allocator))
595    }
596}
597
598impl<'a> Dummy<'a> for ParenthesizedExpression<'a> {
599    /// Create a dummy [`ParenthesizedExpression`].
600    ///
601    /// Has cost of making 1 allocation (8 bytes).
602    fn dummy(allocator: &'a Allocator) -> Self {
603        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
604    }
605}
606
607impl<'a> Dummy<'a> for Statement<'a> {
608    /// Create a dummy [`Statement`].
609    ///
610    /// Has cost of making 1 allocation (8 bytes).
611    fn dummy(allocator: &'a Allocator) -> Self {
612        Self::DebuggerStatement(Dummy::dummy(allocator))
613    }
614}
615
616impl<'a> Dummy<'a> for Directive<'a> {
617    /// Create a dummy [`Directive`].
618    ///
619    /// Does not allocate any data into arena.
620    fn dummy(allocator: &'a Allocator) -> Self {
621        Self {
622            span: Dummy::dummy(allocator),
623            expression: Dummy::dummy(allocator),
624            directive: Dummy::dummy(allocator),
625        }
626    }
627}
628
629impl<'a> Dummy<'a> for Hashbang<'a> {
630    /// Create a dummy [`Hashbang`].
631    ///
632    /// Does not allocate any data into arena.
633    fn dummy(allocator: &'a Allocator) -> Self {
634        Self { span: Dummy::dummy(allocator), value: Dummy::dummy(allocator) }
635    }
636}
637
638impl<'a> Dummy<'a> for BlockStatement<'a> {
639    /// Create a dummy [`BlockStatement`].
640    ///
641    /// Does not allocate any data into arena.
642    fn dummy(allocator: &'a Allocator) -> Self {
643        Self {
644            span: Dummy::dummy(allocator),
645            body: Dummy::dummy(allocator),
646            scope_id: Dummy::dummy(allocator),
647        }
648    }
649}
650
651impl<'a> Dummy<'a> for Declaration<'a> {
652    /// Create a dummy [`Declaration`].
653    ///
654    /// Has cost of making 1 allocation (40 bytes).
655    fn dummy(allocator: &'a Allocator) -> Self {
656        Self::VariableDeclaration(Dummy::dummy(allocator))
657    }
658}
659
660impl<'a> Dummy<'a> for VariableDeclaration<'a> {
661    /// Create a dummy [`VariableDeclaration`].
662    ///
663    /// Does not allocate any data into arena.
664    fn dummy(allocator: &'a Allocator) -> Self {
665        Self {
666            span: Dummy::dummy(allocator),
667            kind: Dummy::dummy(allocator),
668            declarations: Dummy::dummy(allocator),
669            declare: Dummy::dummy(allocator),
670        }
671    }
672}
673
674impl<'a> Dummy<'a> for VariableDeclarationKind {
675    /// Create a dummy [`VariableDeclarationKind`].
676    ///
677    /// Does not allocate any data into arena.
678    #[inline(always)]
679    fn dummy(allocator: &'a Allocator) -> Self {
680        Self::Var
681    }
682}
683
684impl<'a> Dummy<'a> for VariableDeclarator<'a> {
685    /// Create a dummy [`VariableDeclarator`].
686    ///
687    /// Has cost of making 1 allocation (32 bytes).
688    fn dummy(allocator: &'a Allocator) -> Self {
689        Self {
690            span: Dummy::dummy(allocator),
691            kind: Dummy::dummy(allocator),
692            id: Dummy::dummy(allocator),
693            init: Dummy::dummy(allocator),
694            definite: Dummy::dummy(allocator),
695        }
696    }
697}
698
699impl<'a> Dummy<'a> for EmptyStatement {
700    /// Create a dummy [`EmptyStatement`].
701    ///
702    /// Does not allocate any data into arena.
703    fn dummy(allocator: &'a Allocator) -> Self {
704        Self { span: Dummy::dummy(allocator) }
705    }
706}
707
708impl<'a> Dummy<'a> for ExpressionStatement<'a> {
709    /// Create a dummy [`ExpressionStatement`].
710    ///
711    /// Has cost of making 1 allocation (8 bytes).
712    fn dummy(allocator: &'a Allocator) -> Self {
713        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
714    }
715}
716
717impl<'a> Dummy<'a> for IfStatement<'a> {
718    /// Create a dummy [`IfStatement`].
719    ///
720    /// Has cost of making 2 allocations (16 bytes).
721    fn dummy(allocator: &'a Allocator) -> Self {
722        Self {
723            span: Dummy::dummy(allocator),
724            test: Dummy::dummy(allocator),
725            consequent: Dummy::dummy(allocator),
726            alternate: Dummy::dummy(allocator),
727        }
728    }
729}
730
731impl<'a> Dummy<'a> for DoWhileStatement<'a> {
732    /// Create a dummy [`DoWhileStatement`].
733    ///
734    /// Has cost of making 2 allocations (16 bytes).
735    fn dummy(allocator: &'a Allocator) -> Self {
736        Self {
737            span: Dummy::dummy(allocator),
738            body: Dummy::dummy(allocator),
739            test: Dummy::dummy(allocator),
740        }
741    }
742}
743
744impl<'a> Dummy<'a> for WhileStatement<'a> {
745    /// Create a dummy [`WhileStatement`].
746    ///
747    /// Has cost of making 2 allocations (16 bytes).
748    fn dummy(allocator: &'a Allocator) -> Self {
749        Self {
750            span: Dummy::dummy(allocator),
751            test: Dummy::dummy(allocator),
752            body: Dummy::dummy(allocator),
753        }
754    }
755}
756
757impl<'a> Dummy<'a> for ForStatement<'a> {
758    /// Create a dummy [`ForStatement`].
759    ///
760    /// Has cost of making 1 allocation (8 bytes).
761    fn dummy(allocator: &'a Allocator) -> Self {
762        Self {
763            span: Dummy::dummy(allocator),
764            init: Dummy::dummy(allocator),
765            test: Dummy::dummy(allocator),
766            update: Dummy::dummy(allocator),
767            body: Dummy::dummy(allocator),
768            scope_id: Dummy::dummy(allocator),
769        }
770    }
771}
772
773impl<'a> Dummy<'a> for ForStatementInit<'a> {
774    /// Create a dummy [`ForStatementInit`].
775    ///
776    /// Has cost of making 1 allocation (8 bytes).
777    fn dummy(allocator: &'a Allocator) -> Self {
778        Self::NullLiteral(Dummy::dummy(allocator))
779    }
780}
781
782impl<'a> Dummy<'a> for ForInStatement<'a> {
783    /// Create a dummy [`ForInStatement`].
784    ///
785    /// Has cost of making 3 allocations (48 bytes).
786    fn dummy(allocator: &'a Allocator) -> Self {
787        Self {
788            span: Dummy::dummy(allocator),
789            left: Dummy::dummy(allocator),
790            right: Dummy::dummy(allocator),
791            body: Dummy::dummy(allocator),
792            scope_id: Dummy::dummy(allocator),
793        }
794    }
795}
796
797impl<'a> Dummy<'a> for ForStatementLeft<'a> {
798    /// Create a dummy [`ForStatementLeft`].
799    ///
800    /// Has cost of making 1 allocation (32 bytes).
801    fn dummy(allocator: &'a Allocator) -> Self {
802        Self::AssignmentTargetIdentifier(Dummy::dummy(allocator))
803    }
804}
805
806impl<'a> Dummy<'a> for ForOfStatement<'a> {
807    /// Create a dummy [`ForOfStatement`].
808    ///
809    /// Has cost of making 3 allocations (48 bytes).
810    fn dummy(allocator: &'a Allocator) -> Self {
811        Self {
812            span: Dummy::dummy(allocator),
813            r#await: Dummy::dummy(allocator),
814            left: Dummy::dummy(allocator),
815            right: Dummy::dummy(allocator),
816            body: Dummy::dummy(allocator),
817            scope_id: Dummy::dummy(allocator),
818        }
819    }
820}
821
822impl<'a> Dummy<'a> for ContinueStatement<'a> {
823    /// Create a dummy [`ContinueStatement`].
824    ///
825    /// Does not allocate any data into arena.
826    fn dummy(allocator: &'a Allocator) -> Self {
827        Self { span: Dummy::dummy(allocator), label: Dummy::dummy(allocator) }
828    }
829}
830
831impl<'a> Dummy<'a> for BreakStatement<'a> {
832    /// Create a dummy [`BreakStatement`].
833    ///
834    /// Does not allocate any data into arena.
835    fn dummy(allocator: &'a Allocator) -> Self {
836        Self { span: Dummy::dummy(allocator), label: Dummy::dummy(allocator) }
837    }
838}
839
840impl<'a> Dummy<'a> for ReturnStatement<'a> {
841    /// Create a dummy [`ReturnStatement`].
842    ///
843    /// Does not allocate any data into arena.
844    fn dummy(allocator: &'a Allocator) -> Self {
845        Self { span: Dummy::dummy(allocator), argument: Dummy::dummy(allocator) }
846    }
847}
848
849impl<'a> Dummy<'a> for WithStatement<'a> {
850    /// Create a dummy [`WithStatement`].
851    ///
852    /// Has cost of making 2 allocations (16 bytes).
853    fn dummy(allocator: &'a Allocator) -> Self {
854        Self {
855            span: Dummy::dummy(allocator),
856            object: Dummy::dummy(allocator),
857            body: Dummy::dummy(allocator),
858            scope_id: Dummy::dummy(allocator),
859        }
860    }
861}
862
863impl<'a> Dummy<'a> for SwitchStatement<'a> {
864    /// Create a dummy [`SwitchStatement`].
865    ///
866    /// Has cost of making 1 allocation (8 bytes).
867    fn dummy(allocator: &'a Allocator) -> Self {
868        Self {
869            span: Dummy::dummy(allocator),
870            discriminant: Dummy::dummy(allocator),
871            cases: Dummy::dummy(allocator),
872            scope_id: Dummy::dummy(allocator),
873        }
874    }
875}
876
877impl<'a> Dummy<'a> for SwitchCase<'a> {
878    /// Create a dummy [`SwitchCase`].
879    ///
880    /// Does not allocate any data into arena.
881    fn dummy(allocator: &'a Allocator) -> Self {
882        Self {
883            span: Dummy::dummy(allocator),
884            test: Dummy::dummy(allocator),
885            consequent: Dummy::dummy(allocator),
886        }
887    }
888}
889
890impl<'a> Dummy<'a> for LabeledStatement<'a> {
891    /// Create a dummy [`LabeledStatement`].
892    ///
893    /// Has cost of making 1 allocation (8 bytes).
894    fn dummy(allocator: &'a Allocator) -> Self {
895        Self {
896            span: Dummy::dummy(allocator),
897            label: Dummy::dummy(allocator),
898            body: Dummy::dummy(allocator),
899        }
900    }
901}
902
903impl<'a> Dummy<'a> for ThrowStatement<'a> {
904    /// Create a dummy [`ThrowStatement`].
905    ///
906    /// Has cost of making 1 allocation (8 bytes).
907    fn dummy(allocator: &'a Allocator) -> Self {
908        Self { span: Dummy::dummy(allocator), argument: Dummy::dummy(allocator) }
909    }
910}
911
912impl<'a> Dummy<'a> for TryStatement<'a> {
913    /// Create a dummy [`TryStatement`].
914    ///
915    /// Has cost of making 1 allocation (40 bytes).
916    fn dummy(allocator: &'a Allocator) -> Self {
917        Self {
918            span: Dummy::dummy(allocator),
919            block: Dummy::dummy(allocator),
920            handler: Dummy::dummy(allocator),
921            finalizer: Dummy::dummy(allocator),
922        }
923    }
924}
925
926impl<'a> Dummy<'a> for CatchClause<'a> {
927    /// Create a dummy [`CatchClause`].
928    ///
929    /// Has cost of making 1 allocation (40 bytes).
930    fn dummy(allocator: &'a Allocator) -> Self {
931        Self {
932            span: Dummy::dummy(allocator),
933            param: Dummy::dummy(allocator),
934            body: Dummy::dummy(allocator),
935            scope_id: Dummy::dummy(allocator),
936        }
937    }
938}
939
940impl<'a> Dummy<'a> for CatchParameter<'a> {
941    /// Create a dummy [`CatchParameter`].
942    ///
943    /// Has cost of making 1 allocation (32 bytes).
944    fn dummy(allocator: &'a Allocator) -> Self {
945        Self { span: Dummy::dummy(allocator), pattern: Dummy::dummy(allocator) }
946    }
947}
948
949impl<'a> Dummy<'a> for DebuggerStatement {
950    /// Create a dummy [`DebuggerStatement`].
951    ///
952    /// Does not allocate any data into arena.
953    fn dummy(allocator: &'a Allocator) -> Self {
954        Self { span: Dummy::dummy(allocator) }
955    }
956}
957
958impl<'a> Dummy<'a> for BindingPattern<'a> {
959    /// Create a dummy [`BindingPattern`].
960    ///
961    /// Has cost of making 1 allocation (32 bytes).
962    fn dummy(allocator: &'a Allocator) -> Self {
963        Self {
964            kind: Dummy::dummy(allocator),
965            type_annotation: Dummy::dummy(allocator),
966            optional: Dummy::dummy(allocator),
967        }
968    }
969}
970
971impl<'a> Dummy<'a> for BindingPatternKind<'a> {
972    /// Create a dummy [`BindingPatternKind`].
973    ///
974    /// Has cost of making 1 allocation (32 bytes).
975    fn dummy(allocator: &'a Allocator) -> Self {
976        Self::BindingIdentifier(Dummy::dummy(allocator))
977    }
978}
979
980impl<'a> Dummy<'a> for AssignmentPattern<'a> {
981    /// Create a dummy [`AssignmentPattern`].
982    ///
983    /// Has cost of making 2 allocations (40 bytes).
984    fn dummy(allocator: &'a Allocator) -> Self {
985        Self {
986            span: Dummy::dummy(allocator),
987            left: Dummy::dummy(allocator),
988            right: Dummy::dummy(allocator),
989        }
990    }
991}
992
993impl<'a> Dummy<'a> for ObjectPattern<'a> {
994    /// Create a dummy [`ObjectPattern`].
995    ///
996    /// Does not allocate any data into arena.
997    fn dummy(allocator: &'a Allocator) -> Self {
998        Self {
999            span: Dummy::dummy(allocator),
1000            properties: Dummy::dummy(allocator),
1001            rest: Dummy::dummy(allocator),
1002        }
1003    }
1004}
1005
1006impl<'a> Dummy<'a> for BindingProperty<'a> {
1007    /// Create a dummy [`BindingProperty`].
1008    ///
1009    /// Has cost of making 2 allocations (40 bytes).
1010    fn dummy(allocator: &'a Allocator) -> Self {
1011        Self {
1012            span: Dummy::dummy(allocator),
1013            key: Dummy::dummy(allocator),
1014            value: Dummy::dummy(allocator),
1015            shorthand: Dummy::dummy(allocator),
1016            computed: Dummy::dummy(allocator),
1017        }
1018    }
1019}
1020
1021impl<'a> Dummy<'a> for ArrayPattern<'a> {
1022    /// Create a dummy [`ArrayPattern`].
1023    ///
1024    /// Does not allocate any data into arena.
1025    fn dummy(allocator: &'a Allocator) -> Self {
1026        Self {
1027            span: Dummy::dummy(allocator),
1028            elements: Dummy::dummy(allocator),
1029            rest: Dummy::dummy(allocator),
1030        }
1031    }
1032}
1033
1034impl<'a> Dummy<'a> for BindingRestElement<'a> {
1035    /// Create a dummy [`BindingRestElement`].
1036    ///
1037    /// Has cost of making 1 allocation (32 bytes).
1038    fn dummy(allocator: &'a Allocator) -> Self {
1039        Self { span: Dummy::dummy(allocator), argument: Dummy::dummy(allocator) }
1040    }
1041}
1042
1043impl<'a> Dummy<'a> for Function<'a> {
1044    /// Create a dummy [`Function`].
1045    ///
1046    /// Has cost of making 1 allocation (48 bytes).
1047    fn dummy(allocator: &'a Allocator) -> Self {
1048        Self {
1049            span: Dummy::dummy(allocator),
1050            r#type: Dummy::dummy(allocator),
1051            id: Dummy::dummy(allocator),
1052            generator: Dummy::dummy(allocator),
1053            r#async: Dummy::dummy(allocator),
1054            declare: Dummy::dummy(allocator),
1055            type_parameters: Dummy::dummy(allocator),
1056            this_param: Dummy::dummy(allocator),
1057            params: Dummy::dummy(allocator),
1058            return_type: Dummy::dummy(allocator),
1059            body: Dummy::dummy(allocator),
1060            scope_id: Dummy::dummy(allocator),
1061            pure: Dummy::dummy(allocator),
1062            pife: Dummy::dummy(allocator),
1063        }
1064    }
1065}
1066
1067impl<'a> Dummy<'a> for FunctionType {
1068    /// Create a dummy [`FunctionType`].
1069    ///
1070    /// Does not allocate any data into arena.
1071    #[inline(always)]
1072    fn dummy(allocator: &'a Allocator) -> Self {
1073        Self::FunctionDeclaration
1074    }
1075}
1076
1077impl<'a> Dummy<'a> for FormalParameters<'a> {
1078    /// Create a dummy [`FormalParameters`].
1079    ///
1080    /// Does not allocate any data into arena.
1081    fn dummy(allocator: &'a Allocator) -> Self {
1082        Self {
1083            span: Dummy::dummy(allocator),
1084            kind: Dummy::dummy(allocator),
1085            items: Dummy::dummy(allocator),
1086            rest: Dummy::dummy(allocator),
1087        }
1088    }
1089}
1090
1091impl<'a> Dummy<'a> for FormalParameter<'a> {
1092    /// Create a dummy [`FormalParameter`].
1093    ///
1094    /// Has cost of making 1 allocation (32 bytes).
1095    fn dummy(allocator: &'a Allocator) -> Self {
1096        Self {
1097            span: Dummy::dummy(allocator),
1098            decorators: Dummy::dummy(allocator),
1099            pattern: Dummy::dummy(allocator),
1100            accessibility: Dummy::dummy(allocator),
1101            readonly: Dummy::dummy(allocator),
1102            r#override: Dummy::dummy(allocator),
1103        }
1104    }
1105}
1106
1107impl<'a> Dummy<'a> for FormalParameterKind {
1108    /// Create a dummy [`FormalParameterKind`].
1109    ///
1110    /// Does not allocate any data into arena.
1111    #[inline(always)]
1112    fn dummy(allocator: &'a Allocator) -> Self {
1113        Self::FormalParameter
1114    }
1115}
1116
1117impl<'a> Dummy<'a> for FunctionBody<'a> {
1118    /// Create a dummy [`FunctionBody`].
1119    ///
1120    /// Does not allocate any data into arena.
1121    fn dummy(allocator: &'a Allocator) -> Self {
1122        Self {
1123            span: Dummy::dummy(allocator),
1124            directives: Dummy::dummy(allocator),
1125            statements: Dummy::dummy(allocator),
1126        }
1127    }
1128}
1129
1130impl<'a> Dummy<'a> for ArrowFunctionExpression<'a> {
1131    /// Create a dummy [`ArrowFunctionExpression`].
1132    ///
1133    /// Has cost of making 2 allocations (104 bytes).
1134    fn dummy(allocator: &'a Allocator) -> Self {
1135        Self {
1136            span: Dummy::dummy(allocator),
1137            expression: Dummy::dummy(allocator),
1138            r#async: Dummy::dummy(allocator),
1139            type_parameters: Dummy::dummy(allocator),
1140            params: Dummy::dummy(allocator),
1141            return_type: Dummy::dummy(allocator),
1142            body: Dummy::dummy(allocator),
1143            scope_id: Dummy::dummy(allocator),
1144            pure: Dummy::dummy(allocator),
1145            pife: Dummy::dummy(allocator),
1146        }
1147    }
1148}
1149
1150impl<'a> Dummy<'a> for YieldExpression<'a> {
1151    /// Create a dummy [`YieldExpression`].
1152    ///
1153    /// Does not allocate any data into arena.
1154    fn dummy(allocator: &'a Allocator) -> Self {
1155        Self {
1156            span: Dummy::dummy(allocator),
1157            delegate: Dummy::dummy(allocator),
1158            argument: Dummy::dummy(allocator),
1159        }
1160    }
1161}
1162
1163impl<'a> Dummy<'a> for Class<'a> {
1164    /// Create a dummy [`Class`].
1165    ///
1166    /// Has cost of making 1 allocation (32 bytes).
1167    fn dummy(allocator: &'a Allocator) -> Self {
1168        Self {
1169            span: Dummy::dummy(allocator),
1170            r#type: Dummy::dummy(allocator),
1171            decorators: Dummy::dummy(allocator),
1172            id: Dummy::dummy(allocator),
1173            type_parameters: Dummy::dummy(allocator),
1174            super_class: Dummy::dummy(allocator),
1175            super_type_arguments: Dummy::dummy(allocator),
1176            implements: Dummy::dummy(allocator),
1177            body: Dummy::dummy(allocator),
1178            r#abstract: Dummy::dummy(allocator),
1179            declare: Dummy::dummy(allocator),
1180            scope_id: Dummy::dummy(allocator),
1181        }
1182    }
1183}
1184
1185impl<'a> Dummy<'a> for ClassType {
1186    /// Create a dummy [`ClassType`].
1187    ///
1188    /// Does not allocate any data into arena.
1189    #[inline(always)]
1190    fn dummy(allocator: &'a Allocator) -> Self {
1191        Self::ClassDeclaration
1192    }
1193}
1194
1195impl<'a> Dummy<'a> for ClassBody<'a> {
1196    /// Create a dummy [`ClassBody`].
1197    ///
1198    /// Does not allocate any data into arena.
1199    fn dummy(allocator: &'a Allocator) -> Self {
1200        Self { span: Dummy::dummy(allocator), body: Dummy::dummy(allocator) }
1201    }
1202}
1203
1204impl<'a> Dummy<'a> for ClassElement<'a> {
1205    /// Create a dummy [`ClassElement`].
1206    ///
1207    /// Has cost of making 1 allocation (40 bytes).
1208    fn dummy(allocator: &'a Allocator) -> Self {
1209        Self::StaticBlock(Dummy::dummy(allocator))
1210    }
1211}
1212
1213impl<'a> Dummy<'a> for MethodDefinition<'a> {
1214    /// Create a dummy [`MethodDefinition`].
1215    ///
1216    /// Has cost of making 3 allocations (152 bytes).
1217    fn dummy(allocator: &'a Allocator) -> Self {
1218        Self {
1219            span: Dummy::dummy(allocator),
1220            r#type: Dummy::dummy(allocator),
1221            decorators: Dummy::dummy(allocator),
1222            key: Dummy::dummy(allocator),
1223            value: Dummy::dummy(allocator),
1224            kind: Dummy::dummy(allocator),
1225            computed: Dummy::dummy(allocator),
1226            r#static: Dummy::dummy(allocator),
1227            r#override: Dummy::dummy(allocator),
1228            optional: Dummy::dummy(allocator),
1229            accessibility: Dummy::dummy(allocator),
1230        }
1231    }
1232}
1233
1234impl<'a> Dummy<'a> for MethodDefinitionType {
1235    /// Create a dummy [`MethodDefinitionType`].
1236    ///
1237    /// Does not allocate any data into arena.
1238    #[inline(always)]
1239    fn dummy(allocator: &'a Allocator) -> Self {
1240        Self::MethodDefinition
1241    }
1242}
1243
1244impl<'a> Dummy<'a> for PropertyDefinition<'a> {
1245    /// Create a dummy [`PropertyDefinition`].
1246    ///
1247    /// Has cost of making 1 allocation (8 bytes).
1248    fn dummy(allocator: &'a Allocator) -> Self {
1249        Self {
1250            span: Dummy::dummy(allocator),
1251            r#type: Dummy::dummy(allocator),
1252            decorators: Dummy::dummy(allocator),
1253            key: Dummy::dummy(allocator),
1254            type_annotation: Dummy::dummy(allocator),
1255            value: Dummy::dummy(allocator),
1256            computed: Dummy::dummy(allocator),
1257            r#static: Dummy::dummy(allocator),
1258            declare: Dummy::dummy(allocator),
1259            r#override: Dummy::dummy(allocator),
1260            optional: Dummy::dummy(allocator),
1261            definite: Dummy::dummy(allocator),
1262            readonly: Dummy::dummy(allocator),
1263            accessibility: Dummy::dummy(allocator),
1264        }
1265    }
1266}
1267
1268impl<'a> Dummy<'a> for PropertyDefinitionType {
1269    /// Create a dummy [`PropertyDefinitionType`].
1270    ///
1271    /// Does not allocate any data into arena.
1272    #[inline(always)]
1273    fn dummy(allocator: &'a Allocator) -> Self {
1274        Self::PropertyDefinition
1275    }
1276}
1277
1278impl<'a> Dummy<'a> for MethodDefinitionKind {
1279    /// Create a dummy [`MethodDefinitionKind`].
1280    ///
1281    /// Does not allocate any data into arena.
1282    #[inline(always)]
1283    fn dummy(allocator: &'a Allocator) -> Self {
1284        Self::Constructor
1285    }
1286}
1287
1288impl<'a> Dummy<'a> for PrivateIdentifier<'a> {
1289    /// Create a dummy [`PrivateIdentifier`].
1290    ///
1291    /// Does not allocate any data into arena.
1292    fn dummy(allocator: &'a Allocator) -> Self {
1293        Self { span: Dummy::dummy(allocator), name: Dummy::dummy(allocator) }
1294    }
1295}
1296
1297impl<'a> Dummy<'a> for StaticBlock<'a> {
1298    /// Create a dummy [`StaticBlock`].
1299    ///
1300    /// Does not allocate any data into arena.
1301    fn dummy(allocator: &'a Allocator) -> Self {
1302        Self {
1303            span: Dummy::dummy(allocator),
1304            body: Dummy::dummy(allocator),
1305            scope_id: Dummy::dummy(allocator),
1306        }
1307    }
1308}
1309
1310impl<'a> Dummy<'a> for ModuleDeclaration<'a> {
1311    /// Create a dummy [`ModuleDeclaration`].
1312    ///
1313    /// Has cost of making 1 allocation (32 bytes).
1314    fn dummy(allocator: &'a Allocator) -> Self {
1315        Self::TSNamespaceExportDeclaration(Dummy::dummy(allocator))
1316    }
1317}
1318
1319impl<'a> Dummy<'a> for AccessorPropertyType {
1320    /// Create a dummy [`AccessorPropertyType`].
1321    ///
1322    /// Does not allocate any data into arena.
1323    #[inline(always)]
1324    fn dummy(allocator: &'a Allocator) -> Self {
1325        Self::AccessorProperty
1326    }
1327}
1328
1329impl<'a> Dummy<'a> for AccessorProperty<'a> {
1330    /// Create a dummy [`AccessorProperty`].
1331    ///
1332    /// Has cost of making 1 allocation (8 bytes).
1333    fn dummy(allocator: &'a Allocator) -> Self {
1334        Self {
1335            span: Dummy::dummy(allocator),
1336            r#type: Dummy::dummy(allocator),
1337            decorators: Dummy::dummy(allocator),
1338            key: Dummy::dummy(allocator),
1339            type_annotation: Dummy::dummy(allocator),
1340            value: Dummy::dummy(allocator),
1341            computed: Dummy::dummy(allocator),
1342            r#static: Dummy::dummy(allocator),
1343            r#override: Dummy::dummy(allocator),
1344            definite: Dummy::dummy(allocator),
1345            accessibility: Dummy::dummy(allocator),
1346        }
1347    }
1348}
1349
1350impl<'a> Dummy<'a> for ImportExpression<'a> {
1351    /// Create a dummy [`ImportExpression`].
1352    ///
1353    /// Has cost of making 1 allocation (8 bytes).
1354    fn dummy(allocator: &'a Allocator) -> Self {
1355        Self {
1356            span: Dummy::dummy(allocator),
1357            source: Dummy::dummy(allocator),
1358            options: Dummy::dummy(allocator),
1359            phase: Dummy::dummy(allocator),
1360        }
1361    }
1362}
1363
1364impl<'a> Dummy<'a> for ImportDeclaration<'a> {
1365    /// Create a dummy [`ImportDeclaration`].
1366    ///
1367    /// Does not allocate any data into arena.
1368    fn dummy(allocator: &'a Allocator) -> Self {
1369        Self {
1370            span: Dummy::dummy(allocator),
1371            specifiers: Dummy::dummy(allocator),
1372            source: Dummy::dummy(allocator),
1373            phase: Dummy::dummy(allocator),
1374            with_clause: Dummy::dummy(allocator),
1375            import_kind: Dummy::dummy(allocator),
1376        }
1377    }
1378}
1379
1380impl<'a> Dummy<'a> for ImportPhase {
1381    /// Create a dummy [`ImportPhase`].
1382    ///
1383    /// Does not allocate any data into arena.
1384    #[inline(always)]
1385    fn dummy(allocator: &'a Allocator) -> Self {
1386        Self::Source
1387    }
1388}
1389
1390impl<'a> Dummy<'a> for ImportDeclarationSpecifier<'a> {
1391    /// Create a dummy [`ImportDeclarationSpecifier`].
1392    ///
1393    /// Has cost of making 1 allocation (40 bytes).
1394    fn dummy(allocator: &'a Allocator) -> Self {
1395        Self::ImportDefaultSpecifier(Dummy::dummy(allocator))
1396    }
1397}
1398
1399impl<'a> Dummy<'a> for ImportSpecifier<'a> {
1400    /// Create a dummy [`ImportSpecifier`].
1401    ///
1402    /// Does not allocate any data into arena.
1403    fn dummy(allocator: &'a Allocator) -> Self {
1404        Self {
1405            span: Dummy::dummy(allocator),
1406            imported: Dummy::dummy(allocator),
1407            local: Dummy::dummy(allocator),
1408            import_kind: Dummy::dummy(allocator),
1409        }
1410    }
1411}
1412
1413impl<'a> Dummy<'a> for ImportDefaultSpecifier<'a> {
1414    /// Create a dummy [`ImportDefaultSpecifier`].
1415    ///
1416    /// Does not allocate any data into arena.
1417    fn dummy(allocator: &'a Allocator) -> Self {
1418        Self { span: Dummy::dummy(allocator), local: Dummy::dummy(allocator) }
1419    }
1420}
1421
1422impl<'a> Dummy<'a> for ImportNamespaceSpecifier<'a> {
1423    /// Create a dummy [`ImportNamespaceSpecifier`].
1424    ///
1425    /// Does not allocate any data into arena.
1426    fn dummy(allocator: &'a Allocator) -> Self {
1427        Self { span: Dummy::dummy(allocator), local: Dummy::dummy(allocator) }
1428    }
1429}
1430
1431impl<'a> Dummy<'a> for WithClause<'a> {
1432    /// Create a dummy [`WithClause`].
1433    ///
1434    /// Does not allocate any data into arena.
1435    fn dummy(allocator: &'a Allocator) -> Self {
1436        Self {
1437            span: Dummy::dummy(allocator),
1438            keyword: Dummy::dummy(allocator),
1439            with_entries: Dummy::dummy(allocator),
1440        }
1441    }
1442}
1443
1444impl<'a> Dummy<'a> for WithClauseKeyword {
1445    /// Create a dummy [`WithClauseKeyword`].
1446    ///
1447    /// Does not allocate any data into arena.
1448    #[inline(always)]
1449    fn dummy(allocator: &'a Allocator) -> Self {
1450        Self::With
1451    }
1452}
1453
1454impl<'a> Dummy<'a> for ImportAttribute<'a> {
1455    /// Create a dummy [`ImportAttribute`].
1456    ///
1457    /// Does not allocate any data into arena.
1458    fn dummy(allocator: &'a Allocator) -> Self {
1459        Self {
1460            span: Dummy::dummy(allocator),
1461            key: Dummy::dummy(allocator),
1462            value: Dummy::dummy(allocator),
1463        }
1464    }
1465}
1466
1467impl<'a> Dummy<'a> for ImportAttributeKey<'a> {
1468    /// Create a dummy [`ImportAttributeKey`].
1469    ///
1470    /// Does not allocate any data into arena.
1471    fn dummy(allocator: &'a Allocator) -> Self {
1472        Self::Identifier(Dummy::dummy(allocator))
1473    }
1474}
1475
1476impl<'a> Dummy<'a> for ExportNamedDeclaration<'a> {
1477    /// Create a dummy [`ExportNamedDeclaration`].
1478    ///
1479    /// Does not allocate any data into arena.
1480    fn dummy(allocator: &'a Allocator) -> Self {
1481        Self {
1482            span: Dummy::dummy(allocator),
1483            declaration: Dummy::dummy(allocator),
1484            specifiers: Dummy::dummy(allocator),
1485            source: Dummy::dummy(allocator),
1486            export_kind: Dummy::dummy(allocator),
1487            with_clause: Dummy::dummy(allocator),
1488        }
1489    }
1490}
1491
1492impl<'a> Dummy<'a> for ExportDefaultDeclaration<'a> {
1493    /// Create a dummy [`ExportDefaultDeclaration`].
1494    ///
1495    /// Has cost of making 1 allocation (8 bytes).
1496    fn dummy(allocator: &'a Allocator) -> Self {
1497        Self { span: Dummy::dummy(allocator), declaration: Dummy::dummy(allocator) }
1498    }
1499}
1500
1501impl<'a> Dummy<'a> for ExportAllDeclaration<'a> {
1502    /// Create a dummy [`ExportAllDeclaration`].
1503    ///
1504    /// Does not allocate any data into arena.
1505    fn dummy(allocator: &'a Allocator) -> Self {
1506        Self {
1507            span: Dummy::dummy(allocator),
1508            exported: Dummy::dummy(allocator),
1509            source: Dummy::dummy(allocator),
1510            with_clause: Dummy::dummy(allocator),
1511            export_kind: Dummy::dummy(allocator),
1512        }
1513    }
1514}
1515
1516impl<'a> Dummy<'a> for ExportSpecifier<'a> {
1517    /// Create a dummy [`ExportSpecifier`].
1518    ///
1519    /// Does not allocate any data into arena.
1520    fn dummy(allocator: &'a Allocator) -> Self {
1521        Self {
1522            span: Dummy::dummy(allocator),
1523            local: Dummy::dummy(allocator),
1524            exported: Dummy::dummy(allocator),
1525            export_kind: Dummy::dummy(allocator),
1526        }
1527    }
1528}
1529
1530impl<'a> Dummy<'a> for ExportDefaultDeclarationKind<'a> {
1531    /// Create a dummy [`ExportDefaultDeclarationKind`].
1532    ///
1533    /// Has cost of making 1 allocation (8 bytes).
1534    fn dummy(allocator: &'a Allocator) -> Self {
1535        Self::NullLiteral(Dummy::dummy(allocator))
1536    }
1537}
1538
1539impl<'a> Dummy<'a> for ModuleExportName<'a> {
1540    /// Create a dummy [`ModuleExportName`].
1541    ///
1542    /// Does not allocate any data into arena.
1543    fn dummy(allocator: &'a Allocator) -> Self {
1544        Self::IdentifierName(Dummy::dummy(allocator))
1545    }
1546}
1547
1548impl<'a> Dummy<'a> for V8IntrinsicExpression<'a> {
1549    /// Create a dummy [`V8IntrinsicExpression`].
1550    ///
1551    /// Does not allocate any data into arena.
1552    fn dummy(allocator: &'a Allocator) -> Self {
1553        Self {
1554            span: Dummy::dummy(allocator),
1555            name: Dummy::dummy(allocator),
1556            arguments: Dummy::dummy(allocator),
1557        }
1558    }
1559}
1560
1561impl<'a> Dummy<'a> for BooleanLiteral {
1562    /// Create a dummy [`BooleanLiteral`].
1563    ///
1564    /// Does not allocate any data into arena.
1565    fn dummy(allocator: &'a Allocator) -> Self {
1566        Self { span: Dummy::dummy(allocator), value: Dummy::dummy(allocator) }
1567    }
1568}
1569
1570impl<'a> Dummy<'a> for NullLiteral {
1571    /// Create a dummy [`NullLiteral`].
1572    ///
1573    /// Does not allocate any data into arena.
1574    fn dummy(allocator: &'a Allocator) -> Self {
1575        Self { span: Dummy::dummy(allocator) }
1576    }
1577}
1578
1579impl<'a> Dummy<'a> for NumericLiteral<'a> {
1580    /// Create a dummy [`NumericLiteral`].
1581    ///
1582    /// Does not allocate any data into arena.
1583    fn dummy(allocator: &'a Allocator) -> Self {
1584        Self {
1585            span: Dummy::dummy(allocator),
1586            value: Dummy::dummy(allocator),
1587            raw: Dummy::dummy(allocator),
1588            base: Dummy::dummy(allocator),
1589        }
1590    }
1591}
1592
1593impl<'a> Dummy<'a> for StringLiteral<'a> {
1594    /// Create a dummy [`StringLiteral`].
1595    ///
1596    /// Does not allocate any data into arena.
1597    fn dummy(allocator: &'a Allocator) -> Self {
1598        Self {
1599            span: Dummy::dummy(allocator),
1600            value: Dummy::dummy(allocator),
1601            raw: Dummy::dummy(allocator),
1602            lone_surrogates: Dummy::dummy(allocator),
1603        }
1604    }
1605}
1606
1607impl<'a> Dummy<'a> for BigIntLiteral<'a> {
1608    /// Create a dummy [`BigIntLiteral`].
1609    ///
1610    /// Does not allocate any data into arena.
1611    fn dummy(allocator: &'a Allocator) -> Self {
1612        Self {
1613            span: Dummy::dummy(allocator),
1614            value: Dummy::dummy(allocator),
1615            raw: Dummy::dummy(allocator),
1616            base: Dummy::dummy(allocator),
1617        }
1618    }
1619}
1620
1621impl<'a> Dummy<'a> for RegExpLiteral<'a> {
1622    /// Create a dummy [`RegExpLiteral`].
1623    ///
1624    /// Does not allocate any data into arena.
1625    fn dummy(allocator: &'a Allocator) -> Self {
1626        Self {
1627            span: Dummy::dummy(allocator),
1628            regex: Dummy::dummy(allocator),
1629            raw: Dummy::dummy(allocator),
1630        }
1631    }
1632}
1633
1634impl<'a> Dummy<'a> for RegExp<'a> {
1635    /// Create a dummy [`RegExp`].
1636    ///
1637    /// Does not allocate any data into arena.
1638    fn dummy(allocator: &'a Allocator) -> Self {
1639        Self { pattern: Dummy::dummy(allocator), flags: Dummy::dummy(allocator) }
1640    }
1641}
1642
1643impl<'a> Dummy<'a> for RegExpPattern<'a> {
1644    /// Create a dummy [`RegExpPattern`].
1645    ///
1646    /// Does not allocate any data into arena.
1647    fn dummy(allocator: &'a Allocator) -> Self {
1648        Self { text: Dummy::dummy(allocator), pattern: Dummy::dummy(allocator) }
1649    }
1650}
1651
1652impl<'a> Dummy<'a> for JSXElement<'a> {
1653    /// Create a dummy [`JSXElement`].
1654    ///
1655    /// Has cost of making 2 allocations (64 bytes).
1656    fn dummy(allocator: &'a Allocator) -> Self {
1657        Self {
1658            span: Dummy::dummy(allocator),
1659            opening_element: Dummy::dummy(allocator),
1660            children: Dummy::dummy(allocator),
1661            closing_element: Dummy::dummy(allocator),
1662        }
1663    }
1664}
1665
1666impl<'a> Dummy<'a> for JSXOpeningElement<'a> {
1667    /// Create a dummy [`JSXOpeningElement`].
1668    ///
1669    /// Has cost of making 1 allocation (8 bytes).
1670    fn dummy(allocator: &'a Allocator) -> Self {
1671        Self {
1672            span: Dummy::dummy(allocator),
1673            name: Dummy::dummy(allocator),
1674            type_arguments: Dummy::dummy(allocator),
1675            attributes: Dummy::dummy(allocator),
1676        }
1677    }
1678}
1679
1680impl<'a> Dummy<'a> for JSXClosingElement<'a> {
1681    /// Create a dummy [`JSXClosingElement`].
1682    ///
1683    /// Has cost of making 1 allocation (8 bytes).
1684    fn dummy(allocator: &'a Allocator) -> Self {
1685        Self { span: Dummy::dummy(allocator), name: Dummy::dummy(allocator) }
1686    }
1687}
1688
1689impl<'a> Dummy<'a> for JSXFragment<'a> {
1690    /// Create a dummy [`JSXFragment`].
1691    ///
1692    /// Does not allocate any data into arena.
1693    fn dummy(allocator: &'a Allocator) -> Self {
1694        Self {
1695            span: Dummy::dummy(allocator),
1696            opening_fragment: Dummy::dummy(allocator),
1697            children: Dummy::dummy(allocator),
1698            closing_fragment: Dummy::dummy(allocator),
1699        }
1700    }
1701}
1702
1703impl<'a> Dummy<'a> for JSXOpeningFragment {
1704    /// Create a dummy [`JSXOpeningFragment`].
1705    ///
1706    /// Does not allocate any data into arena.
1707    fn dummy(allocator: &'a Allocator) -> Self {
1708        Self { span: Dummy::dummy(allocator) }
1709    }
1710}
1711
1712impl<'a> Dummy<'a> for JSXClosingFragment {
1713    /// Create a dummy [`JSXClosingFragment`].
1714    ///
1715    /// Does not allocate any data into arena.
1716    fn dummy(allocator: &'a Allocator) -> Self {
1717        Self { span: Dummy::dummy(allocator) }
1718    }
1719}
1720
1721impl<'a> Dummy<'a> for JSXElementName<'a> {
1722    /// Create a dummy [`JSXElementName`].
1723    ///
1724    /// Has cost of making 1 allocation (8 bytes).
1725    fn dummy(allocator: &'a Allocator) -> Self {
1726        Self::ThisExpression(Dummy::dummy(allocator))
1727    }
1728}
1729
1730impl<'a> Dummy<'a> for JSXNamespacedName<'a> {
1731    /// Create a dummy [`JSXNamespacedName`].
1732    ///
1733    /// Does not allocate any data into arena.
1734    fn dummy(allocator: &'a Allocator) -> Self {
1735        Self {
1736            span: Dummy::dummy(allocator),
1737            namespace: Dummy::dummy(allocator),
1738            name: Dummy::dummy(allocator),
1739        }
1740    }
1741}
1742
1743impl<'a> Dummy<'a> for JSXMemberExpression<'a> {
1744    /// Create a dummy [`JSXMemberExpression`].
1745    ///
1746    /// Has cost of making 1 allocation (8 bytes).
1747    fn dummy(allocator: &'a Allocator) -> Self {
1748        Self {
1749            span: Dummy::dummy(allocator),
1750            object: Dummy::dummy(allocator),
1751            property: Dummy::dummy(allocator),
1752        }
1753    }
1754}
1755
1756impl<'a> Dummy<'a> for JSXMemberExpressionObject<'a> {
1757    /// Create a dummy [`JSXMemberExpressionObject`].
1758    ///
1759    /// Has cost of making 1 allocation (8 bytes).
1760    fn dummy(allocator: &'a Allocator) -> Self {
1761        Self::ThisExpression(Dummy::dummy(allocator))
1762    }
1763}
1764
1765impl<'a> Dummy<'a> for JSXExpressionContainer<'a> {
1766    /// Create a dummy [`JSXExpressionContainer`].
1767    ///
1768    /// Does not allocate any data into arena.
1769    fn dummy(allocator: &'a Allocator) -> Self {
1770        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
1771    }
1772}
1773
1774impl<'a> Dummy<'a> for JSXExpression<'a> {
1775    /// Create a dummy [`JSXExpression`].
1776    ///
1777    /// Does not allocate any data into arena.
1778    fn dummy(allocator: &'a Allocator) -> Self {
1779        Self::EmptyExpression(Dummy::dummy(allocator))
1780    }
1781}
1782
1783impl<'a> Dummy<'a> for JSXEmptyExpression {
1784    /// Create a dummy [`JSXEmptyExpression`].
1785    ///
1786    /// Does not allocate any data into arena.
1787    fn dummy(allocator: &'a Allocator) -> Self {
1788        Self { span: Dummy::dummy(allocator) }
1789    }
1790}
1791
1792impl<'a> Dummy<'a> for JSXAttributeItem<'a> {
1793    /// Create a dummy [`JSXAttributeItem`].
1794    ///
1795    /// Has cost of making 2 allocations (32 bytes).
1796    fn dummy(allocator: &'a Allocator) -> Self {
1797        Self::SpreadAttribute(Dummy::dummy(allocator))
1798    }
1799}
1800
1801impl<'a> Dummy<'a> for JSXAttribute<'a> {
1802    /// Create a dummy [`JSXAttribute`].
1803    ///
1804    /// Has cost of making 1 allocation (24 bytes).
1805    fn dummy(allocator: &'a Allocator) -> Self {
1806        Self {
1807            span: Dummy::dummy(allocator),
1808            name: Dummy::dummy(allocator),
1809            value: Dummy::dummy(allocator),
1810        }
1811    }
1812}
1813
1814impl<'a> Dummy<'a> for JSXSpreadAttribute<'a> {
1815    /// Create a dummy [`JSXSpreadAttribute`].
1816    ///
1817    /// Has cost of making 1 allocation (8 bytes).
1818    fn dummy(allocator: &'a Allocator) -> Self {
1819        Self { span: Dummy::dummy(allocator), argument: Dummy::dummy(allocator) }
1820    }
1821}
1822
1823impl<'a> Dummy<'a> for JSXAttributeName<'a> {
1824    /// Create a dummy [`JSXAttributeName`].
1825    ///
1826    /// Has cost of making 1 allocation (24 bytes).
1827    fn dummy(allocator: &'a Allocator) -> Self {
1828        Self::Identifier(Dummy::dummy(allocator))
1829    }
1830}
1831
1832impl<'a> Dummy<'a> for JSXAttributeValue<'a> {
1833    /// Create a dummy [`JSXAttributeValue`].
1834    ///
1835    /// Has cost of making 1 allocation (24 bytes).
1836    fn dummy(allocator: &'a Allocator) -> Self {
1837        Self::ExpressionContainer(Dummy::dummy(allocator))
1838    }
1839}
1840
1841impl<'a> Dummy<'a> for JSXIdentifier<'a> {
1842    /// Create a dummy [`JSXIdentifier`].
1843    ///
1844    /// Does not allocate any data into arena.
1845    fn dummy(allocator: &'a Allocator) -> Self {
1846        Self { span: Dummy::dummy(allocator), name: Dummy::dummy(allocator) }
1847    }
1848}
1849
1850impl<'a> Dummy<'a> for JSXChild<'a> {
1851    /// Create a dummy [`JSXChild`].
1852    ///
1853    /// Has cost of making 1 allocation (24 bytes).
1854    fn dummy(allocator: &'a Allocator) -> Self {
1855        Self::ExpressionContainer(Dummy::dummy(allocator))
1856    }
1857}
1858
1859impl<'a> Dummy<'a> for JSXSpreadChild<'a> {
1860    /// Create a dummy [`JSXSpreadChild`].
1861    ///
1862    /// Has cost of making 1 allocation (8 bytes).
1863    fn dummy(allocator: &'a Allocator) -> Self {
1864        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
1865    }
1866}
1867
1868impl<'a> Dummy<'a> for JSXText<'a> {
1869    /// Create a dummy [`JSXText`].
1870    ///
1871    /// Does not allocate any data into arena.
1872    fn dummy(allocator: &'a Allocator) -> Self {
1873        Self {
1874            span: Dummy::dummy(allocator),
1875            value: Dummy::dummy(allocator),
1876            raw: Dummy::dummy(allocator),
1877        }
1878    }
1879}
1880
1881impl<'a> Dummy<'a> for TSThisParameter<'a> {
1882    /// Create a dummy [`TSThisParameter`].
1883    ///
1884    /// Does not allocate any data into arena.
1885    fn dummy(allocator: &'a Allocator) -> Self {
1886        Self {
1887            span: Dummy::dummy(allocator),
1888            this_span: Dummy::dummy(allocator),
1889            type_annotation: Dummy::dummy(allocator),
1890        }
1891    }
1892}
1893
1894impl<'a> Dummy<'a> for TSEnumDeclaration<'a> {
1895    /// Create a dummy [`TSEnumDeclaration`].
1896    ///
1897    /// Does not allocate any data into arena.
1898    fn dummy(allocator: &'a Allocator) -> Self {
1899        Self {
1900            span: Dummy::dummy(allocator),
1901            id: Dummy::dummy(allocator),
1902            body: Dummy::dummy(allocator),
1903            r#const: Dummy::dummy(allocator),
1904            declare: Dummy::dummy(allocator),
1905            scope_id: Dummy::dummy(allocator),
1906        }
1907    }
1908}
1909
1910impl<'a> Dummy<'a> for TSEnumBody<'a> {
1911    /// Create a dummy [`TSEnumBody`].
1912    ///
1913    /// Does not allocate any data into arena.
1914    fn dummy(allocator: &'a Allocator) -> Self {
1915        Self { span: Dummy::dummy(allocator), members: Dummy::dummy(allocator) }
1916    }
1917}
1918
1919impl<'a> Dummy<'a> for TSEnumMember<'a> {
1920    /// Create a dummy [`TSEnumMember`].
1921    ///
1922    /// Has cost of making 1 allocation (24 bytes).
1923    fn dummy(allocator: &'a Allocator) -> Self {
1924        Self {
1925            span: Dummy::dummy(allocator),
1926            id: Dummy::dummy(allocator),
1927            initializer: Dummy::dummy(allocator),
1928        }
1929    }
1930}
1931
1932impl<'a> Dummy<'a> for TSEnumMemberName<'a> {
1933    /// Create a dummy [`TSEnumMemberName`].
1934    ///
1935    /// Has cost of making 1 allocation (24 bytes).
1936    fn dummy(allocator: &'a Allocator) -> Self {
1937        Self::Identifier(Dummy::dummy(allocator))
1938    }
1939}
1940
1941impl<'a> Dummy<'a> for TSTypeAnnotation<'a> {
1942    /// Create a dummy [`TSTypeAnnotation`].
1943    ///
1944    /// Has cost of making 1 allocation (8 bytes).
1945    fn dummy(allocator: &'a Allocator) -> Self {
1946        Self { span: Dummy::dummy(allocator), type_annotation: Dummy::dummy(allocator) }
1947    }
1948}
1949
1950impl<'a> Dummy<'a> for TSLiteralType<'a> {
1951    /// Create a dummy [`TSLiteralType`].
1952    ///
1953    /// Has cost of making 1 allocation (16 bytes).
1954    fn dummy(allocator: &'a Allocator) -> Self {
1955        Self { span: Dummy::dummy(allocator), literal: Dummy::dummy(allocator) }
1956    }
1957}
1958
1959impl<'a> Dummy<'a> for TSLiteral<'a> {
1960    /// Create a dummy [`TSLiteral`].
1961    ///
1962    /// Has cost of making 1 allocation (16 bytes).
1963    fn dummy(allocator: &'a Allocator) -> Self {
1964        Self::BooleanLiteral(Dummy::dummy(allocator))
1965    }
1966}
1967
1968impl<'a> Dummy<'a> for TSType<'a> {
1969    /// Create a dummy [`TSType`].
1970    ///
1971    /// Has cost of making 1 allocation (8 bytes).
1972    fn dummy(allocator: &'a Allocator) -> Self {
1973        Self::TSAnyKeyword(Dummy::dummy(allocator))
1974    }
1975}
1976
1977impl<'a> Dummy<'a> for TSConditionalType<'a> {
1978    /// Create a dummy [`TSConditionalType`].
1979    ///
1980    /// Has cost of making 4 allocations (32 bytes).
1981    fn dummy(allocator: &'a Allocator) -> Self {
1982        Self {
1983            span: Dummy::dummy(allocator),
1984            check_type: Dummy::dummy(allocator),
1985            extends_type: Dummy::dummy(allocator),
1986            true_type: Dummy::dummy(allocator),
1987            false_type: Dummy::dummy(allocator),
1988            scope_id: Dummy::dummy(allocator),
1989        }
1990    }
1991}
1992
1993impl<'a> Dummy<'a> for TSUnionType<'a> {
1994    /// Create a dummy [`TSUnionType`].
1995    ///
1996    /// Does not allocate any data into arena.
1997    fn dummy(allocator: &'a Allocator) -> Self {
1998        Self { span: Dummy::dummy(allocator), types: Dummy::dummy(allocator) }
1999    }
2000}
2001
2002impl<'a> Dummy<'a> for TSIntersectionType<'a> {
2003    /// Create a dummy [`TSIntersectionType`].
2004    ///
2005    /// Does not allocate any data into arena.
2006    fn dummy(allocator: &'a Allocator) -> Self {
2007        Self { span: Dummy::dummy(allocator), types: Dummy::dummy(allocator) }
2008    }
2009}
2010
2011impl<'a> Dummy<'a> for TSParenthesizedType<'a> {
2012    /// Create a dummy [`TSParenthesizedType`].
2013    ///
2014    /// Has cost of making 1 allocation (8 bytes).
2015    fn dummy(allocator: &'a Allocator) -> Self {
2016        Self { span: Dummy::dummy(allocator), type_annotation: Dummy::dummy(allocator) }
2017    }
2018}
2019
2020impl<'a> Dummy<'a> for TSTypeOperator<'a> {
2021    /// Create a dummy [`TSTypeOperator`].
2022    ///
2023    /// Has cost of making 1 allocation (8 bytes).
2024    fn dummy(allocator: &'a Allocator) -> Self {
2025        Self {
2026            span: Dummy::dummy(allocator),
2027            operator: Dummy::dummy(allocator),
2028            type_annotation: Dummy::dummy(allocator),
2029        }
2030    }
2031}
2032
2033impl<'a> Dummy<'a> for TSTypeOperatorOperator {
2034    /// Create a dummy [`TSTypeOperatorOperator`].
2035    ///
2036    /// Does not allocate any data into arena.
2037    #[inline(always)]
2038    fn dummy(allocator: &'a Allocator) -> Self {
2039        Self::Keyof
2040    }
2041}
2042
2043impl<'a> Dummy<'a> for TSArrayType<'a> {
2044    /// Create a dummy [`TSArrayType`].
2045    ///
2046    /// Has cost of making 1 allocation (8 bytes).
2047    fn dummy(allocator: &'a Allocator) -> Self {
2048        Self { span: Dummy::dummy(allocator), element_type: Dummy::dummy(allocator) }
2049    }
2050}
2051
2052impl<'a> Dummy<'a> for TSIndexedAccessType<'a> {
2053    /// Create a dummy [`TSIndexedAccessType`].
2054    ///
2055    /// Has cost of making 2 allocations (16 bytes).
2056    fn dummy(allocator: &'a Allocator) -> Self {
2057        Self {
2058            span: Dummy::dummy(allocator),
2059            object_type: Dummy::dummy(allocator),
2060            index_type: Dummy::dummy(allocator),
2061        }
2062    }
2063}
2064
2065impl<'a> Dummy<'a> for TSTupleType<'a> {
2066    /// Create a dummy [`TSTupleType`].
2067    ///
2068    /// Does not allocate any data into arena.
2069    fn dummy(allocator: &'a Allocator) -> Self {
2070        Self { span: Dummy::dummy(allocator), element_types: Dummy::dummy(allocator) }
2071    }
2072}
2073
2074impl<'a> Dummy<'a> for TSNamedTupleMember<'a> {
2075    /// Create a dummy [`TSNamedTupleMember`].
2076    ///
2077    /// Has cost of making 1 allocation (8 bytes).
2078    fn dummy(allocator: &'a Allocator) -> Self {
2079        Self {
2080            span: Dummy::dummy(allocator),
2081            label: Dummy::dummy(allocator),
2082            element_type: Dummy::dummy(allocator),
2083            optional: Dummy::dummy(allocator),
2084        }
2085    }
2086}
2087
2088impl<'a> Dummy<'a> for TSOptionalType<'a> {
2089    /// Create a dummy [`TSOptionalType`].
2090    ///
2091    /// Has cost of making 1 allocation (8 bytes).
2092    fn dummy(allocator: &'a Allocator) -> Self {
2093        Self { span: Dummy::dummy(allocator), type_annotation: Dummy::dummy(allocator) }
2094    }
2095}
2096
2097impl<'a> Dummy<'a> for TSRestType<'a> {
2098    /// Create a dummy [`TSRestType`].
2099    ///
2100    /// Has cost of making 1 allocation (8 bytes).
2101    fn dummy(allocator: &'a Allocator) -> Self {
2102        Self { span: Dummy::dummy(allocator), type_annotation: Dummy::dummy(allocator) }
2103    }
2104}
2105
2106impl<'a> Dummy<'a> for TSTupleElement<'a> {
2107    /// Create a dummy [`TSTupleElement`].
2108    ///
2109    /// Has cost of making 1 allocation (8 bytes).
2110    fn dummy(allocator: &'a Allocator) -> Self {
2111        Self::TSAnyKeyword(Dummy::dummy(allocator))
2112    }
2113}
2114
2115impl<'a> Dummy<'a> for TSAnyKeyword {
2116    /// Create a dummy [`TSAnyKeyword`].
2117    ///
2118    /// Does not allocate any data into arena.
2119    fn dummy(allocator: &'a Allocator) -> Self {
2120        Self { span: Dummy::dummy(allocator) }
2121    }
2122}
2123
2124impl<'a> Dummy<'a> for TSStringKeyword {
2125    /// Create a dummy [`TSStringKeyword`].
2126    ///
2127    /// Does not allocate any data into arena.
2128    fn dummy(allocator: &'a Allocator) -> Self {
2129        Self { span: Dummy::dummy(allocator) }
2130    }
2131}
2132
2133impl<'a> Dummy<'a> for TSBooleanKeyword {
2134    /// Create a dummy [`TSBooleanKeyword`].
2135    ///
2136    /// Does not allocate any data into arena.
2137    fn dummy(allocator: &'a Allocator) -> Self {
2138        Self { span: Dummy::dummy(allocator) }
2139    }
2140}
2141
2142impl<'a> Dummy<'a> for TSNumberKeyword {
2143    /// Create a dummy [`TSNumberKeyword`].
2144    ///
2145    /// Does not allocate any data into arena.
2146    fn dummy(allocator: &'a Allocator) -> Self {
2147        Self { span: Dummy::dummy(allocator) }
2148    }
2149}
2150
2151impl<'a> Dummy<'a> for TSNeverKeyword {
2152    /// Create a dummy [`TSNeverKeyword`].
2153    ///
2154    /// Does not allocate any data into arena.
2155    fn dummy(allocator: &'a Allocator) -> Self {
2156        Self { span: Dummy::dummy(allocator) }
2157    }
2158}
2159
2160impl<'a> Dummy<'a> for TSIntrinsicKeyword {
2161    /// Create a dummy [`TSIntrinsicKeyword`].
2162    ///
2163    /// Does not allocate any data into arena.
2164    fn dummy(allocator: &'a Allocator) -> Self {
2165        Self { span: Dummy::dummy(allocator) }
2166    }
2167}
2168
2169impl<'a> Dummy<'a> for TSUnknownKeyword {
2170    /// Create a dummy [`TSUnknownKeyword`].
2171    ///
2172    /// Does not allocate any data into arena.
2173    fn dummy(allocator: &'a Allocator) -> Self {
2174        Self { span: Dummy::dummy(allocator) }
2175    }
2176}
2177
2178impl<'a> Dummy<'a> for TSNullKeyword {
2179    /// Create a dummy [`TSNullKeyword`].
2180    ///
2181    /// Does not allocate any data into arena.
2182    fn dummy(allocator: &'a Allocator) -> Self {
2183        Self { span: Dummy::dummy(allocator) }
2184    }
2185}
2186
2187impl<'a> Dummy<'a> for TSUndefinedKeyword {
2188    /// Create a dummy [`TSUndefinedKeyword`].
2189    ///
2190    /// Does not allocate any data into arena.
2191    fn dummy(allocator: &'a Allocator) -> Self {
2192        Self { span: Dummy::dummy(allocator) }
2193    }
2194}
2195
2196impl<'a> Dummy<'a> for TSVoidKeyword {
2197    /// Create a dummy [`TSVoidKeyword`].
2198    ///
2199    /// Does not allocate any data into arena.
2200    fn dummy(allocator: &'a Allocator) -> Self {
2201        Self { span: Dummy::dummy(allocator) }
2202    }
2203}
2204
2205impl<'a> Dummy<'a> for TSSymbolKeyword {
2206    /// Create a dummy [`TSSymbolKeyword`].
2207    ///
2208    /// Does not allocate any data into arena.
2209    fn dummy(allocator: &'a Allocator) -> Self {
2210        Self { span: Dummy::dummy(allocator) }
2211    }
2212}
2213
2214impl<'a> Dummy<'a> for TSThisType {
2215    /// Create a dummy [`TSThisType`].
2216    ///
2217    /// Does not allocate any data into arena.
2218    fn dummy(allocator: &'a Allocator) -> Self {
2219        Self { span: Dummy::dummy(allocator) }
2220    }
2221}
2222
2223impl<'a> Dummy<'a> for TSObjectKeyword {
2224    /// Create a dummy [`TSObjectKeyword`].
2225    ///
2226    /// Does not allocate any data into arena.
2227    fn dummy(allocator: &'a Allocator) -> Self {
2228        Self { span: Dummy::dummy(allocator) }
2229    }
2230}
2231
2232impl<'a> Dummy<'a> for TSBigIntKeyword {
2233    /// Create a dummy [`TSBigIntKeyword`].
2234    ///
2235    /// Does not allocate any data into arena.
2236    fn dummy(allocator: &'a Allocator) -> Self {
2237        Self { span: Dummy::dummy(allocator) }
2238    }
2239}
2240
2241impl<'a> Dummy<'a> for TSTypeReference<'a> {
2242    /// Create a dummy [`TSTypeReference`].
2243    ///
2244    /// Has cost of making 1 allocation (8 bytes).
2245    fn dummy(allocator: &'a Allocator) -> Self {
2246        Self {
2247            span: Dummy::dummy(allocator),
2248            type_name: Dummy::dummy(allocator),
2249            type_arguments: Dummy::dummy(allocator),
2250        }
2251    }
2252}
2253
2254impl<'a> Dummy<'a> for TSTypeName<'a> {
2255    /// Create a dummy [`TSTypeName`].
2256    ///
2257    /// Has cost of making 1 allocation (8 bytes).
2258    fn dummy(allocator: &'a Allocator) -> Self {
2259        Self::ThisExpression(Dummy::dummy(allocator))
2260    }
2261}
2262
2263impl<'a> Dummy<'a> for TSQualifiedName<'a> {
2264    /// Create a dummy [`TSQualifiedName`].
2265    ///
2266    /// Has cost of making 1 allocation (8 bytes).
2267    fn dummy(allocator: &'a Allocator) -> Self {
2268        Self {
2269            span: Dummy::dummy(allocator),
2270            left: Dummy::dummy(allocator),
2271            right: Dummy::dummy(allocator),
2272        }
2273    }
2274}
2275
2276impl<'a> Dummy<'a> for TSTypeParameterInstantiation<'a> {
2277    /// Create a dummy [`TSTypeParameterInstantiation`].
2278    ///
2279    /// Does not allocate any data into arena.
2280    fn dummy(allocator: &'a Allocator) -> Self {
2281        Self { span: Dummy::dummy(allocator), params: Dummy::dummy(allocator) }
2282    }
2283}
2284
2285impl<'a> Dummy<'a> for TSTypeParameter<'a> {
2286    /// Create a dummy [`TSTypeParameter`].
2287    ///
2288    /// Does not allocate any data into arena.
2289    fn dummy(allocator: &'a Allocator) -> Self {
2290        Self {
2291            span: Dummy::dummy(allocator),
2292            name: Dummy::dummy(allocator),
2293            constraint: Dummy::dummy(allocator),
2294            default: Dummy::dummy(allocator),
2295            r#in: Dummy::dummy(allocator),
2296            out: Dummy::dummy(allocator),
2297            r#const: Dummy::dummy(allocator),
2298        }
2299    }
2300}
2301
2302impl<'a> Dummy<'a> for TSTypeParameterDeclaration<'a> {
2303    /// Create a dummy [`TSTypeParameterDeclaration`].
2304    ///
2305    /// Does not allocate any data into arena.
2306    fn dummy(allocator: &'a Allocator) -> Self {
2307        Self { span: Dummy::dummy(allocator), params: Dummy::dummy(allocator) }
2308    }
2309}
2310
2311impl<'a> Dummy<'a> for TSTypeAliasDeclaration<'a> {
2312    /// Create a dummy [`TSTypeAliasDeclaration`].
2313    ///
2314    /// Has cost of making 1 allocation (8 bytes).
2315    fn dummy(allocator: &'a Allocator) -> Self {
2316        Self {
2317            span: Dummy::dummy(allocator),
2318            id: Dummy::dummy(allocator),
2319            type_parameters: Dummy::dummy(allocator),
2320            type_annotation: Dummy::dummy(allocator),
2321            declare: Dummy::dummy(allocator),
2322            scope_id: Dummy::dummy(allocator),
2323        }
2324    }
2325}
2326
2327impl<'a> Dummy<'a> for TSAccessibility {
2328    /// Create a dummy [`TSAccessibility`].
2329    ///
2330    /// Does not allocate any data into arena.
2331    #[inline(always)]
2332    fn dummy(allocator: &'a Allocator) -> Self {
2333        Self::Private
2334    }
2335}
2336
2337impl<'a> Dummy<'a> for TSClassImplements<'a> {
2338    /// Create a dummy [`TSClassImplements`].
2339    ///
2340    /// Has cost of making 1 allocation (8 bytes).
2341    fn dummy(allocator: &'a Allocator) -> Self {
2342        Self {
2343            span: Dummy::dummy(allocator),
2344            expression: Dummy::dummy(allocator),
2345            type_arguments: Dummy::dummy(allocator),
2346        }
2347    }
2348}
2349
2350impl<'a> Dummy<'a> for TSInterfaceDeclaration<'a> {
2351    /// Create a dummy [`TSInterfaceDeclaration`].
2352    ///
2353    /// Has cost of making 1 allocation (32 bytes).
2354    fn dummy(allocator: &'a Allocator) -> Self {
2355        Self {
2356            span: Dummy::dummy(allocator),
2357            id: Dummy::dummy(allocator),
2358            type_parameters: Dummy::dummy(allocator),
2359            extends: Dummy::dummy(allocator),
2360            body: Dummy::dummy(allocator),
2361            declare: Dummy::dummy(allocator),
2362            scope_id: Dummy::dummy(allocator),
2363        }
2364    }
2365}
2366
2367impl<'a> Dummy<'a> for TSInterfaceBody<'a> {
2368    /// Create a dummy [`TSInterfaceBody`].
2369    ///
2370    /// Does not allocate any data into arena.
2371    fn dummy(allocator: &'a Allocator) -> Self {
2372        Self { span: Dummy::dummy(allocator), body: Dummy::dummy(allocator) }
2373    }
2374}
2375
2376impl<'a> Dummy<'a> for TSPropertySignature<'a> {
2377    /// Create a dummy [`TSPropertySignature`].
2378    ///
2379    /// Has cost of making 1 allocation (8 bytes).
2380    fn dummy(allocator: &'a Allocator) -> Self {
2381        Self {
2382            span: Dummy::dummy(allocator),
2383            computed: Dummy::dummy(allocator),
2384            optional: Dummy::dummy(allocator),
2385            readonly: Dummy::dummy(allocator),
2386            key: Dummy::dummy(allocator),
2387            type_annotation: Dummy::dummy(allocator),
2388        }
2389    }
2390}
2391
2392impl<'a> Dummy<'a> for TSSignature<'a> {
2393    /// Create a dummy [`TSSignature`].
2394    ///
2395    /// Has cost of making 2 allocations (48 bytes).
2396    fn dummy(allocator: &'a Allocator) -> Self {
2397        Self::TSPropertySignature(Dummy::dummy(allocator))
2398    }
2399}
2400
2401impl<'a> Dummy<'a> for TSIndexSignature<'a> {
2402    /// Create a dummy [`TSIndexSignature`].
2403    ///
2404    /// Has cost of making 2 allocations (32 bytes).
2405    fn dummy(allocator: &'a Allocator) -> Self {
2406        Self {
2407            span: Dummy::dummy(allocator),
2408            parameters: Dummy::dummy(allocator),
2409            type_annotation: Dummy::dummy(allocator),
2410            readonly: Dummy::dummy(allocator),
2411            r#static: Dummy::dummy(allocator),
2412        }
2413    }
2414}
2415
2416impl<'a> Dummy<'a> for TSCallSignatureDeclaration<'a> {
2417    /// Create a dummy [`TSCallSignatureDeclaration`].
2418    ///
2419    /// Has cost of making 1 allocation (48 bytes).
2420    fn dummy(allocator: &'a Allocator) -> Self {
2421        Self {
2422            span: Dummy::dummy(allocator),
2423            type_parameters: Dummy::dummy(allocator),
2424            this_param: Dummy::dummy(allocator),
2425            params: Dummy::dummy(allocator),
2426            return_type: Dummy::dummy(allocator),
2427            scope_id: Dummy::dummy(allocator),
2428        }
2429    }
2430}
2431
2432impl<'a> Dummy<'a> for TSMethodSignatureKind {
2433    /// Create a dummy [`TSMethodSignatureKind`].
2434    ///
2435    /// Does not allocate any data into arena.
2436    #[inline(always)]
2437    fn dummy(allocator: &'a Allocator) -> Self {
2438        Self::Method
2439    }
2440}
2441
2442impl<'a> Dummy<'a> for TSMethodSignature<'a> {
2443    /// Create a dummy [`TSMethodSignature`].
2444    ///
2445    /// Has cost of making 2 allocations (56 bytes).
2446    fn dummy(allocator: &'a Allocator) -> Self {
2447        Self {
2448            span: Dummy::dummy(allocator),
2449            key: Dummy::dummy(allocator),
2450            computed: Dummy::dummy(allocator),
2451            optional: Dummy::dummy(allocator),
2452            kind: Dummy::dummy(allocator),
2453            type_parameters: Dummy::dummy(allocator),
2454            this_param: Dummy::dummy(allocator),
2455            params: Dummy::dummy(allocator),
2456            return_type: Dummy::dummy(allocator),
2457            scope_id: Dummy::dummy(allocator),
2458        }
2459    }
2460}
2461
2462impl<'a> Dummy<'a> for TSConstructSignatureDeclaration<'a> {
2463    /// Create a dummy [`TSConstructSignatureDeclaration`].
2464    ///
2465    /// Has cost of making 1 allocation (48 bytes).
2466    fn dummy(allocator: &'a Allocator) -> Self {
2467        Self {
2468            span: Dummy::dummy(allocator),
2469            type_parameters: Dummy::dummy(allocator),
2470            params: Dummy::dummy(allocator),
2471            return_type: Dummy::dummy(allocator),
2472            scope_id: Dummy::dummy(allocator),
2473        }
2474    }
2475}
2476
2477impl<'a> Dummy<'a> for TSIndexSignatureName<'a> {
2478    /// Create a dummy [`TSIndexSignatureName`].
2479    ///
2480    /// Has cost of making 2 allocations (32 bytes).
2481    fn dummy(allocator: &'a Allocator) -> Self {
2482        Self {
2483            span: Dummy::dummy(allocator),
2484            name: Dummy::dummy(allocator),
2485            type_annotation: Dummy::dummy(allocator),
2486        }
2487    }
2488}
2489
2490impl<'a> Dummy<'a> for TSInterfaceHeritage<'a> {
2491    /// Create a dummy [`TSInterfaceHeritage`].
2492    ///
2493    /// Has cost of making 1 allocation (8 bytes).
2494    fn dummy(allocator: &'a Allocator) -> Self {
2495        Self {
2496            span: Dummy::dummy(allocator),
2497            expression: Dummy::dummy(allocator),
2498            type_arguments: Dummy::dummy(allocator),
2499        }
2500    }
2501}
2502
2503impl<'a> Dummy<'a> for TSTypePredicate<'a> {
2504    /// Create a dummy [`TSTypePredicate`].
2505    ///
2506    /// Does not allocate any data into arena.
2507    fn dummy(allocator: &'a Allocator) -> Self {
2508        Self {
2509            span: Dummy::dummy(allocator),
2510            parameter_name: Dummy::dummy(allocator),
2511            asserts: Dummy::dummy(allocator),
2512            type_annotation: Dummy::dummy(allocator),
2513        }
2514    }
2515}
2516
2517impl<'a> Dummy<'a> for TSTypePredicateName<'a> {
2518    /// Create a dummy [`TSTypePredicateName`].
2519    ///
2520    /// Does not allocate any data into arena.
2521    fn dummy(allocator: &'a Allocator) -> Self {
2522        Self::This(Dummy::dummy(allocator))
2523    }
2524}
2525
2526impl<'a> Dummy<'a> for TSModuleDeclaration<'a> {
2527    /// Create a dummy [`TSModuleDeclaration`].
2528    ///
2529    /// Does not allocate any data into arena.
2530    fn dummy(allocator: &'a Allocator) -> Self {
2531        Self {
2532            span: Dummy::dummy(allocator),
2533            id: Dummy::dummy(allocator),
2534            body: Dummy::dummy(allocator),
2535            kind: Dummy::dummy(allocator),
2536            declare: Dummy::dummy(allocator),
2537            scope_id: Dummy::dummy(allocator),
2538        }
2539    }
2540}
2541
2542impl<'a> Dummy<'a> for TSModuleDeclarationKind {
2543    /// Create a dummy [`TSModuleDeclarationKind`].
2544    ///
2545    /// Does not allocate any data into arena.
2546    #[inline(always)]
2547    fn dummy(allocator: &'a Allocator) -> Self {
2548        Self::Global
2549    }
2550}
2551
2552impl<'a> Dummy<'a> for TSModuleDeclarationName<'a> {
2553    /// Create a dummy [`TSModuleDeclarationName`].
2554    ///
2555    /// Does not allocate any data into arena.
2556    fn dummy(allocator: &'a Allocator) -> Self {
2557        Self::Identifier(Dummy::dummy(allocator))
2558    }
2559}
2560
2561impl<'a> Dummy<'a> for TSModuleDeclarationBody<'a> {
2562    /// Create a dummy [`TSModuleDeclarationBody`].
2563    ///
2564    /// Has cost of making 1 allocation (56 bytes).
2565    fn dummy(allocator: &'a Allocator) -> Self {
2566        Self::TSModuleBlock(Dummy::dummy(allocator))
2567    }
2568}
2569
2570impl<'a> Dummy<'a> for TSModuleBlock<'a> {
2571    /// Create a dummy [`TSModuleBlock`].
2572    ///
2573    /// Does not allocate any data into arena.
2574    fn dummy(allocator: &'a Allocator) -> Self {
2575        Self {
2576            span: Dummy::dummy(allocator),
2577            directives: Dummy::dummy(allocator),
2578            body: Dummy::dummy(allocator),
2579        }
2580    }
2581}
2582
2583impl<'a> Dummy<'a> for TSTypeLiteral<'a> {
2584    /// Create a dummy [`TSTypeLiteral`].
2585    ///
2586    /// Does not allocate any data into arena.
2587    fn dummy(allocator: &'a Allocator) -> Self {
2588        Self { span: Dummy::dummy(allocator), members: Dummy::dummy(allocator) }
2589    }
2590}
2591
2592impl<'a> Dummy<'a> for TSInferType<'a> {
2593    /// Create a dummy [`TSInferType`].
2594    ///
2595    /// Has cost of making 1 allocation (80 bytes).
2596    fn dummy(allocator: &'a Allocator) -> Self {
2597        Self { span: Dummy::dummy(allocator), type_parameter: Dummy::dummy(allocator) }
2598    }
2599}
2600
2601impl<'a> Dummy<'a> for TSTypeQuery<'a> {
2602    /// Create a dummy [`TSTypeQuery`].
2603    ///
2604    /// Has cost of making 1 allocation (8 bytes).
2605    fn dummy(allocator: &'a Allocator) -> Self {
2606        Self {
2607            span: Dummy::dummy(allocator),
2608            expr_name: Dummy::dummy(allocator),
2609            type_arguments: Dummy::dummy(allocator),
2610        }
2611    }
2612}
2613
2614impl<'a> Dummy<'a> for TSTypeQueryExprName<'a> {
2615    /// Create a dummy [`TSTypeQueryExprName`].
2616    ///
2617    /// Has cost of making 1 allocation (8 bytes).
2618    fn dummy(allocator: &'a Allocator) -> Self {
2619        Self::ThisExpression(Dummy::dummy(allocator))
2620    }
2621}
2622
2623impl<'a> Dummy<'a> for TSImportType<'a> {
2624    /// Create a dummy [`TSImportType`].
2625    ///
2626    /// Has cost of making 1 allocation (8 bytes).
2627    fn dummy(allocator: &'a Allocator) -> Self {
2628        Self {
2629            span: Dummy::dummy(allocator),
2630            argument: Dummy::dummy(allocator),
2631            options: Dummy::dummy(allocator),
2632            qualifier: Dummy::dummy(allocator),
2633            type_arguments: Dummy::dummy(allocator),
2634        }
2635    }
2636}
2637
2638impl<'a> Dummy<'a> for TSImportTypeQualifier<'a> {
2639    /// Create a dummy [`TSImportTypeQualifier`].
2640    ///
2641    /// Has cost of making 1 allocation (24 bytes).
2642    fn dummy(allocator: &'a Allocator) -> Self {
2643        Self::Identifier(Dummy::dummy(allocator))
2644    }
2645}
2646
2647impl<'a> Dummy<'a> for TSImportTypeQualifiedName<'a> {
2648    /// Create a dummy [`TSImportTypeQualifiedName`].
2649    ///
2650    /// Has cost of making 1 allocation (24 bytes).
2651    fn dummy(allocator: &'a Allocator) -> Self {
2652        Self {
2653            span: Dummy::dummy(allocator),
2654            left: Dummy::dummy(allocator),
2655            right: Dummy::dummy(allocator),
2656        }
2657    }
2658}
2659
2660impl<'a> Dummy<'a> for TSFunctionType<'a> {
2661    /// Create a dummy [`TSFunctionType`].
2662    ///
2663    /// Has cost of making 3 allocations (80 bytes).
2664    fn dummy(allocator: &'a Allocator) -> Self {
2665        Self {
2666            span: Dummy::dummy(allocator),
2667            type_parameters: Dummy::dummy(allocator),
2668            this_param: Dummy::dummy(allocator),
2669            params: Dummy::dummy(allocator),
2670            return_type: Dummy::dummy(allocator),
2671            scope_id: Dummy::dummy(allocator),
2672        }
2673    }
2674}
2675
2676impl<'a> Dummy<'a> for TSConstructorType<'a> {
2677    /// Create a dummy [`TSConstructorType`].
2678    ///
2679    /// Has cost of making 3 allocations (80 bytes).
2680    fn dummy(allocator: &'a Allocator) -> Self {
2681        Self {
2682            span: Dummy::dummy(allocator),
2683            r#abstract: Dummy::dummy(allocator),
2684            type_parameters: Dummy::dummy(allocator),
2685            params: Dummy::dummy(allocator),
2686            return_type: Dummy::dummy(allocator),
2687            scope_id: Dummy::dummy(allocator),
2688        }
2689    }
2690}
2691
2692impl<'a> Dummy<'a> for TSMappedType<'a> {
2693    /// Create a dummy [`TSMappedType`].
2694    ///
2695    /// Has cost of making 1 allocation (80 bytes).
2696    fn dummy(allocator: &'a Allocator) -> Self {
2697        Self {
2698            span: Dummy::dummy(allocator),
2699            type_parameter: Dummy::dummy(allocator),
2700            name_type: Dummy::dummy(allocator),
2701            type_annotation: Dummy::dummy(allocator),
2702            optional: Dummy::dummy(allocator),
2703            readonly: Dummy::dummy(allocator),
2704            scope_id: Dummy::dummy(allocator),
2705        }
2706    }
2707}
2708
2709impl<'a> Dummy<'a> for TSMappedTypeModifierOperator {
2710    /// Create a dummy [`TSMappedTypeModifierOperator`].
2711    ///
2712    /// Does not allocate any data into arena.
2713    #[inline(always)]
2714    fn dummy(allocator: &'a Allocator) -> Self {
2715        Self::True
2716    }
2717}
2718
2719impl<'a> Dummy<'a> for TSTemplateLiteralType<'a> {
2720    /// Create a dummy [`TSTemplateLiteralType`].
2721    ///
2722    /// Does not allocate any data into arena.
2723    fn dummy(allocator: &'a Allocator) -> Self {
2724        Self {
2725            span: Dummy::dummy(allocator),
2726            quasis: Dummy::dummy(allocator),
2727            types: Dummy::dummy(allocator),
2728        }
2729    }
2730}
2731
2732impl<'a> Dummy<'a> for TSAsExpression<'a> {
2733    /// Create a dummy [`TSAsExpression`].
2734    ///
2735    /// Has cost of making 2 allocations (16 bytes).
2736    fn dummy(allocator: &'a Allocator) -> Self {
2737        Self {
2738            span: Dummy::dummy(allocator),
2739            expression: Dummy::dummy(allocator),
2740            type_annotation: Dummy::dummy(allocator),
2741        }
2742    }
2743}
2744
2745impl<'a> Dummy<'a> for TSSatisfiesExpression<'a> {
2746    /// Create a dummy [`TSSatisfiesExpression`].
2747    ///
2748    /// Has cost of making 2 allocations (16 bytes).
2749    fn dummy(allocator: &'a Allocator) -> Self {
2750        Self {
2751            span: Dummy::dummy(allocator),
2752            expression: Dummy::dummy(allocator),
2753            type_annotation: Dummy::dummy(allocator),
2754        }
2755    }
2756}
2757
2758impl<'a> Dummy<'a> for TSTypeAssertion<'a> {
2759    /// Create a dummy [`TSTypeAssertion`].
2760    ///
2761    /// Has cost of making 2 allocations (16 bytes).
2762    fn dummy(allocator: &'a Allocator) -> Self {
2763        Self {
2764            span: Dummy::dummy(allocator),
2765            type_annotation: Dummy::dummy(allocator),
2766            expression: Dummy::dummy(allocator),
2767        }
2768    }
2769}
2770
2771impl<'a> Dummy<'a> for TSImportEqualsDeclaration<'a> {
2772    /// Create a dummy [`TSImportEqualsDeclaration`].
2773    ///
2774    /// Has cost of making 1 allocation (8 bytes).
2775    fn dummy(allocator: &'a Allocator) -> Self {
2776        Self {
2777            span: Dummy::dummy(allocator),
2778            id: Dummy::dummy(allocator),
2779            module_reference: Dummy::dummy(allocator),
2780            import_kind: Dummy::dummy(allocator),
2781        }
2782    }
2783}
2784
2785impl<'a> Dummy<'a> for TSModuleReference<'a> {
2786    /// Create a dummy [`TSModuleReference`].
2787    ///
2788    /// Has cost of making 1 allocation (8 bytes).
2789    fn dummy(allocator: &'a Allocator) -> Self {
2790        Self::ThisExpression(Dummy::dummy(allocator))
2791    }
2792}
2793
2794impl<'a> Dummy<'a> for TSExternalModuleReference<'a> {
2795    /// Create a dummy [`TSExternalModuleReference`].
2796    ///
2797    /// Does not allocate any data into arena.
2798    fn dummy(allocator: &'a Allocator) -> Self {
2799        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
2800    }
2801}
2802
2803impl<'a> Dummy<'a> for TSNonNullExpression<'a> {
2804    /// Create a dummy [`TSNonNullExpression`].
2805    ///
2806    /// Has cost of making 1 allocation (8 bytes).
2807    fn dummy(allocator: &'a Allocator) -> Self {
2808        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
2809    }
2810}
2811
2812impl<'a> Dummy<'a> for Decorator<'a> {
2813    /// Create a dummy [`Decorator`].
2814    ///
2815    /// Has cost of making 1 allocation (8 bytes).
2816    fn dummy(allocator: &'a Allocator) -> Self {
2817        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
2818    }
2819}
2820
2821impl<'a> Dummy<'a> for TSExportAssignment<'a> {
2822    /// Create a dummy [`TSExportAssignment`].
2823    ///
2824    /// Has cost of making 1 allocation (8 bytes).
2825    fn dummy(allocator: &'a Allocator) -> Self {
2826        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
2827    }
2828}
2829
2830impl<'a> Dummy<'a> for TSNamespaceExportDeclaration<'a> {
2831    /// Create a dummy [`TSNamespaceExportDeclaration`].
2832    ///
2833    /// Does not allocate any data into arena.
2834    fn dummy(allocator: &'a Allocator) -> Self {
2835        Self { span: Dummy::dummy(allocator), id: Dummy::dummy(allocator) }
2836    }
2837}
2838
2839impl<'a> Dummy<'a> for TSInstantiationExpression<'a> {
2840    /// Create a dummy [`TSInstantiationExpression`].
2841    ///
2842    /// Has cost of making 2 allocations (40 bytes).
2843    fn dummy(allocator: &'a Allocator) -> Self {
2844        Self {
2845            span: Dummy::dummy(allocator),
2846            expression: Dummy::dummy(allocator),
2847            type_arguments: Dummy::dummy(allocator),
2848        }
2849    }
2850}
2851
2852impl<'a> Dummy<'a> for ImportOrExportKind {
2853    /// Create a dummy [`ImportOrExportKind`].
2854    ///
2855    /// Does not allocate any data into arena.
2856    #[inline(always)]
2857    fn dummy(allocator: &'a Allocator) -> Self {
2858        Self::Value
2859    }
2860}
2861
2862impl<'a> Dummy<'a> for JSDocNullableType<'a> {
2863    /// Create a dummy [`JSDocNullableType`].
2864    ///
2865    /// Has cost of making 1 allocation (8 bytes).
2866    fn dummy(allocator: &'a Allocator) -> Self {
2867        Self {
2868            span: Dummy::dummy(allocator),
2869            type_annotation: Dummy::dummy(allocator),
2870            postfix: Dummy::dummy(allocator),
2871        }
2872    }
2873}
2874
2875impl<'a> Dummy<'a> for JSDocNonNullableType<'a> {
2876    /// Create a dummy [`JSDocNonNullableType`].
2877    ///
2878    /// Has cost of making 1 allocation (8 bytes).
2879    fn dummy(allocator: &'a Allocator) -> Self {
2880        Self {
2881            span: Dummy::dummy(allocator),
2882            type_annotation: Dummy::dummy(allocator),
2883            postfix: Dummy::dummy(allocator),
2884        }
2885    }
2886}
2887
2888impl<'a> Dummy<'a> for JSDocUnknownType {
2889    /// Create a dummy [`JSDocUnknownType`].
2890    ///
2891    /// Does not allocate any data into arena.
2892    fn dummy(allocator: &'a Allocator) -> Self {
2893        Self { span: Dummy::dummy(allocator) }
2894    }
2895}