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        }
859    }
860}
861
862impl<'a> Dummy<'a> for SwitchStatement<'a> {
863    /// Create a dummy [`SwitchStatement`].
864    ///
865    /// Has cost of making 1 allocation (8 bytes).
866    fn dummy(allocator: &'a Allocator) -> Self {
867        Self {
868            span: Dummy::dummy(allocator),
869            discriminant: Dummy::dummy(allocator),
870            cases: Dummy::dummy(allocator),
871            scope_id: Dummy::dummy(allocator),
872        }
873    }
874}
875
876impl<'a> Dummy<'a> for SwitchCase<'a> {
877    /// Create a dummy [`SwitchCase`].
878    ///
879    /// Does not allocate any data into arena.
880    fn dummy(allocator: &'a Allocator) -> Self {
881        Self {
882            span: Dummy::dummy(allocator),
883            test: Dummy::dummy(allocator),
884            consequent: Dummy::dummy(allocator),
885        }
886    }
887}
888
889impl<'a> Dummy<'a> for LabeledStatement<'a> {
890    /// Create a dummy [`LabeledStatement`].
891    ///
892    /// Has cost of making 1 allocation (8 bytes).
893    fn dummy(allocator: &'a Allocator) -> Self {
894        Self {
895            span: Dummy::dummy(allocator),
896            label: Dummy::dummy(allocator),
897            body: Dummy::dummy(allocator),
898        }
899    }
900}
901
902impl<'a> Dummy<'a> for ThrowStatement<'a> {
903    /// Create a dummy [`ThrowStatement`].
904    ///
905    /// Has cost of making 1 allocation (8 bytes).
906    fn dummy(allocator: &'a Allocator) -> Self {
907        Self { span: Dummy::dummy(allocator), argument: Dummy::dummy(allocator) }
908    }
909}
910
911impl<'a> Dummy<'a> for TryStatement<'a> {
912    /// Create a dummy [`TryStatement`].
913    ///
914    /// Has cost of making 1 allocation (40 bytes).
915    fn dummy(allocator: &'a Allocator) -> Self {
916        Self {
917            span: Dummy::dummy(allocator),
918            block: Dummy::dummy(allocator),
919            handler: Dummy::dummy(allocator),
920            finalizer: Dummy::dummy(allocator),
921        }
922    }
923}
924
925impl<'a> Dummy<'a> for CatchClause<'a> {
926    /// Create a dummy [`CatchClause`].
927    ///
928    /// Has cost of making 1 allocation (40 bytes).
929    fn dummy(allocator: &'a Allocator) -> Self {
930        Self {
931            span: Dummy::dummy(allocator),
932            param: Dummy::dummy(allocator),
933            body: Dummy::dummy(allocator),
934            scope_id: Dummy::dummy(allocator),
935        }
936    }
937}
938
939impl<'a> Dummy<'a> for CatchParameter<'a> {
940    /// Create a dummy [`CatchParameter`].
941    ///
942    /// Has cost of making 1 allocation (32 bytes).
943    fn dummy(allocator: &'a Allocator) -> Self {
944        Self { span: Dummy::dummy(allocator), pattern: Dummy::dummy(allocator) }
945    }
946}
947
948impl<'a> Dummy<'a> for DebuggerStatement {
949    /// Create a dummy [`DebuggerStatement`].
950    ///
951    /// Does not allocate any data into arena.
952    fn dummy(allocator: &'a Allocator) -> Self {
953        Self { span: Dummy::dummy(allocator) }
954    }
955}
956
957impl<'a> Dummy<'a> for BindingPattern<'a> {
958    /// Create a dummy [`BindingPattern`].
959    ///
960    /// Has cost of making 1 allocation (32 bytes).
961    fn dummy(allocator: &'a Allocator) -> Self {
962        Self {
963            kind: Dummy::dummy(allocator),
964            type_annotation: Dummy::dummy(allocator),
965            optional: Dummy::dummy(allocator),
966        }
967    }
968}
969
970impl<'a> Dummy<'a> for BindingPatternKind<'a> {
971    /// Create a dummy [`BindingPatternKind`].
972    ///
973    /// Has cost of making 1 allocation (32 bytes).
974    fn dummy(allocator: &'a Allocator) -> Self {
975        Self::BindingIdentifier(Dummy::dummy(allocator))
976    }
977}
978
979impl<'a> Dummy<'a> for AssignmentPattern<'a> {
980    /// Create a dummy [`AssignmentPattern`].
981    ///
982    /// Has cost of making 2 allocations (40 bytes).
983    fn dummy(allocator: &'a Allocator) -> Self {
984        Self {
985            span: Dummy::dummy(allocator),
986            left: Dummy::dummy(allocator),
987            right: Dummy::dummy(allocator),
988        }
989    }
990}
991
992impl<'a> Dummy<'a> for ObjectPattern<'a> {
993    /// Create a dummy [`ObjectPattern`].
994    ///
995    /// Does not allocate any data into arena.
996    fn dummy(allocator: &'a Allocator) -> Self {
997        Self {
998            span: Dummy::dummy(allocator),
999            properties: Dummy::dummy(allocator),
1000            rest: Dummy::dummy(allocator),
1001        }
1002    }
1003}
1004
1005impl<'a> Dummy<'a> for BindingProperty<'a> {
1006    /// Create a dummy [`BindingProperty`].
1007    ///
1008    /// Has cost of making 2 allocations (40 bytes).
1009    fn dummy(allocator: &'a Allocator) -> Self {
1010        Self {
1011            span: Dummy::dummy(allocator),
1012            key: Dummy::dummy(allocator),
1013            value: Dummy::dummy(allocator),
1014            shorthand: Dummy::dummy(allocator),
1015            computed: Dummy::dummy(allocator),
1016        }
1017    }
1018}
1019
1020impl<'a> Dummy<'a> for ArrayPattern<'a> {
1021    /// Create a dummy [`ArrayPattern`].
1022    ///
1023    /// Does not allocate any data into arena.
1024    fn dummy(allocator: &'a Allocator) -> Self {
1025        Self {
1026            span: Dummy::dummy(allocator),
1027            elements: Dummy::dummy(allocator),
1028            rest: Dummy::dummy(allocator),
1029        }
1030    }
1031}
1032
1033impl<'a> Dummy<'a> for BindingRestElement<'a> {
1034    /// Create a dummy [`BindingRestElement`].
1035    ///
1036    /// Has cost of making 1 allocation (32 bytes).
1037    fn dummy(allocator: &'a Allocator) -> Self {
1038        Self { span: Dummy::dummy(allocator), argument: Dummy::dummy(allocator) }
1039    }
1040}
1041
1042impl<'a> Dummy<'a> for Function<'a> {
1043    /// Create a dummy [`Function`].
1044    ///
1045    /// Has cost of making 1 allocation (48 bytes).
1046    fn dummy(allocator: &'a Allocator) -> Self {
1047        Self {
1048            span: Dummy::dummy(allocator),
1049            r#type: Dummy::dummy(allocator),
1050            id: Dummy::dummy(allocator),
1051            generator: Dummy::dummy(allocator),
1052            r#async: Dummy::dummy(allocator),
1053            declare: Dummy::dummy(allocator),
1054            type_parameters: Dummy::dummy(allocator),
1055            this_param: Dummy::dummy(allocator),
1056            params: Dummy::dummy(allocator),
1057            return_type: Dummy::dummy(allocator),
1058            body: Dummy::dummy(allocator),
1059            scope_id: Dummy::dummy(allocator),
1060            pure: Dummy::dummy(allocator),
1061            pife: Dummy::dummy(allocator),
1062        }
1063    }
1064}
1065
1066impl<'a> Dummy<'a> for FunctionType {
1067    /// Create a dummy [`FunctionType`].
1068    ///
1069    /// Does not allocate any data into arena.
1070    #[inline(always)]
1071    fn dummy(allocator: &'a Allocator) -> Self {
1072        Self::FunctionDeclaration
1073    }
1074}
1075
1076impl<'a> Dummy<'a> for FormalParameters<'a> {
1077    /// Create a dummy [`FormalParameters`].
1078    ///
1079    /// Does not allocate any data into arena.
1080    fn dummy(allocator: &'a Allocator) -> Self {
1081        Self {
1082            span: Dummy::dummy(allocator),
1083            kind: Dummy::dummy(allocator),
1084            items: Dummy::dummy(allocator),
1085            rest: Dummy::dummy(allocator),
1086        }
1087    }
1088}
1089
1090impl<'a> Dummy<'a> for FormalParameter<'a> {
1091    /// Create a dummy [`FormalParameter`].
1092    ///
1093    /// Has cost of making 1 allocation (32 bytes).
1094    fn dummy(allocator: &'a Allocator) -> Self {
1095        Self {
1096            span: Dummy::dummy(allocator),
1097            decorators: Dummy::dummy(allocator),
1098            pattern: Dummy::dummy(allocator),
1099            accessibility: Dummy::dummy(allocator),
1100            readonly: Dummy::dummy(allocator),
1101            r#override: Dummy::dummy(allocator),
1102        }
1103    }
1104}
1105
1106impl<'a> Dummy<'a> for FormalParameterKind {
1107    /// Create a dummy [`FormalParameterKind`].
1108    ///
1109    /// Does not allocate any data into arena.
1110    #[inline(always)]
1111    fn dummy(allocator: &'a Allocator) -> Self {
1112        Self::FormalParameter
1113    }
1114}
1115
1116impl<'a> Dummy<'a> for FunctionBody<'a> {
1117    /// Create a dummy [`FunctionBody`].
1118    ///
1119    /// Does not allocate any data into arena.
1120    fn dummy(allocator: &'a Allocator) -> Self {
1121        Self {
1122            span: Dummy::dummy(allocator),
1123            directives: Dummy::dummy(allocator),
1124            statements: Dummy::dummy(allocator),
1125        }
1126    }
1127}
1128
1129impl<'a> Dummy<'a> for ArrowFunctionExpression<'a> {
1130    /// Create a dummy [`ArrowFunctionExpression`].
1131    ///
1132    /// Has cost of making 2 allocations (104 bytes).
1133    fn dummy(allocator: &'a Allocator) -> Self {
1134        Self {
1135            span: Dummy::dummy(allocator),
1136            expression: Dummy::dummy(allocator),
1137            r#async: Dummy::dummy(allocator),
1138            type_parameters: Dummy::dummy(allocator),
1139            params: Dummy::dummy(allocator),
1140            return_type: Dummy::dummy(allocator),
1141            body: Dummy::dummy(allocator),
1142            scope_id: Dummy::dummy(allocator),
1143            pure: Dummy::dummy(allocator),
1144            pife: Dummy::dummy(allocator),
1145        }
1146    }
1147}
1148
1149impl<'a> Dummy<'a> for YieldExpression<'a> {
1150    /// Create a dummy [`YieldExpression`].
1151    ///
1152    /// Does not allocate any data into arena.
1153    fn dummy(allocator: &'a Allocator) -> Self {
1154        Self {
1155            span: Dummy::dummy(allocator),
1156            delegate: Dummy::dummy(allocator),
1157            argument: Dummy::dummy(allocator),
1158        }
1159    }
1160}
1161
1162impl<'a> Dummy<'a> for Class<'a> {
1163    /// Create a dummy [`Class`].
1164    ///
1165    /// Has cost of making 1 allocation (32 bytes).
1166    fn dummy(allocator: &'a Allocator) -> Self {
1167        Self {
1168            span: Dummy::dummy(allocator),
1169            r#type: Dummy::dummy(allocator),
1170            decorators: Dummy::dummy(allocator),
1171            id: Dummy::dummy(allocator),
1172            type_parameters: Dummy::dummy(allocator),
1173            super_class: Dummy::dummy(allocator),
1174            super_type_arguments: Dummy::dummy(allocator),
1175            implements: Dummy::dummy(allocator),
1176            body: Dummy::dummy(allocator),
1177            r#abstract: Dummy::dummy(allocator),
1178            declare: Dummy::dummy(allocator),
1179            scope_id: Dummy::dummy(allocator),
1180        }
1181    }
1182}
1183
1184impl<'a> Dummy<'a> for ClassType {
1185    /// Create a dummy [`ClassType`].
1186    ///
1187    /// Does not allocate any data into arena.
1188    #[inline(always)]
1189    fn dummy(allocator: &'a Allocator) -> Self {
1190        Self::ClassDeclaration
1191    }
1192}
1193
1194impl<'a> Dummy<'a> for ClassBody<'a> {
1195    /// Create a dummy [`ClassBody`].
1196    ///
1197    /// Does not allocate any data into arena.
1198    fn dummy(allocator: &'a Allocator) -> Self {
1199        Self { span: Dummy::dummy(allocator), body: Dummy::dummy(allocator) }
1200    }
1201}
1202
1203impl<'a> Dummy<'a> for ClassElement<'a> {
1204    /// Create a dummy [`ClassElement`].
1205    ///
1206    /// Has cost of making 1 allocation (40 bytes).
1207    fn dummy(allocator: &'a Allocator) -> Self {
1208        Self::StaticBlock(Dummy::dummy(allocator))
1209    }
1210}
1211
1212impl<'a> Dummy<'a> for MethodDefinition<'a> {
1213    /// Create a dummy [`MethodDefinition`].
1214    ///
1215    /// Has cost of making 3 allocations (152 bytes).
1216    fn dummy(allocator: &'a Allocator) -> Self {
1217        Self {
1218            span: Dummy::dummy(allocator),
1219            r#type: Dummy::dummy(allocator),
1220            decorators: Dummy::dummy(allocator),
1221            key: Dummy::dummy(allocator),
1222            value: Dummy::dummy(allocator),
1223            kind: Dummy::dummy(allocator),
1224            computed: Dummy::dummy(allocator),
1225            r#static: Dummy::dummy(allocator),
1226            r#override: Dummy::dummy(allocator),
1227            optional: Dummy::dummy(allocator),
1228            accessibility: Dummy::dummy(allocator),
1229        }
1230    }
1231}
1232
1233impl<'a> Dummy<'a> for MethodDefinitionType {
1234    /// Create a dummy [`MethodDefinitionType`].
1235    ///
1236    /// Does not allocate any data into arena.
1237    #[inline(always)]
1238    fn dummy(allocator: &'a Allocator) -> Self {
1239        Self::MethodDefinition
1240    }
1241}
1242
1243impl<'a> Dummy<'a> for PropertyDefinition<'a> {
1244    /// Create a dummy [`PropertyDefinition`].
1245    ///
1246    /// Has cost of making 1 allocation (8 bytes).
1247    fn dummy(allocator: &'a Allocator) -> Self {
1248        Self {
1249            span: Dummy::dummy(allocator),
1250            r#type: Dummy::dummy(allocator),
1251            decorators: Dummy::dummy(allocator),
1252            key: Dummy::dummy(allocator),
1253            type_annotation: Dummy::dummy(allocator),
1254            value: Dummy::dummy(allocator),
1255            computed: Dummy::dummy(allocator),
1256            r#static: Dummy::dummy(allocator),
1257            declare: Dummy::dummy(allocator),
1258            r#override: Dummy::dummy(allocator),
1259            optional: Dummy::dummy(allocator),
1260            definite: Dummy::dummy(allocator),
1261            readonly: Dummy::dummy(allocator),
1262            accessibility: Dummy::dummy(allocator),
1263        }
1264    }
1265}
1266
1267impl<'a> Dummy<'a> for PropertyDefinitionType {
1268    /// Create a dummy [`PropertyDefinitionType`].
1269    ///
1270    /// Does not allocate any data into arena.
1271    #[inline(always)]
1272    fn dummy(allocator: &'a Allocator) -> Self {
1273        Self::PropertyDefinition
1274    }
1275}
1276
1277impl<'a> Dummy<'a> for MethodDefinitionKind {
1278    /// Create a dummy [`MethodDefinitionKind`].
1279    ///
1280    /// Does not allocate any data into arena.
1281    #[inline(always)]
1282    fn dummy(allocator: &'a Allocator) -> Self {
1283        Self::Constructor
1284    }
1285}
1286
1287impl<'a> Dummy<'a> for PrivateIdentifier<'a> {
1288    /// Create a dummy [`PrivateIdentifier`].
1289    ///
1290    /// Does not allocate any data into arena.
1291    fn dummy(allocator: &'a Allocator) -> Self {
1292        Self { span: Dummy::dummy(allocator), name: Dummy::dummy(allocator) }
1293    }
1294}
1295
1296impl<'a> Dummy<'a> for StaticBlock<'a> {
1297    /// Create a dummy [`StaticBlock`].
1298    ///
1299    /// Does not allocate any data into arena.
1300    fn dummy(allocator: &'a Allocator) -> Self {
1301        Self {
1302            span: Dummy::dummy(allocator),
1303            body: Dummy::dummy(allocator),
1304            scope_id: Dummy::dummy(allocator),
1305        }
1306    }
1307}
1308
1309impl<'a> Dummy<'a> for ModuleDeclaration<'a> {
1310    /// Create a dummy [`ModuleDeclaration`].
1311    ///
1312    /// Has cost of making 1 allocation (32 bytes).
1313    fn dummy(allocator: &'a Allocator) -> Self {
1314        Self::TSNamespaceExportDeclaration(Dummy::dummy(allocator))
1315    }
1316}
1317
1318impl<'a> Dummy<'a> for AccessorPropertyType {
1319    /// Create a dummy [`AccessorPropertyType`].
1320    ///
1321    /// Does not allocate any data into arena.
1322    #[inline(always)]
1323    fn dummy(allocator: &'a Allocator) -> Self {
1324        Self::AccessorProperty
1325    }
1326}
1327
1328impl<'a> Dummy<'a> for AccessorProperty<'a> {
1329    /// Create a dummy [`AccessorProperty`].
1330    ///
1331    /// Has cost of making 1 allocation (8 bytes).
1332    fn dummy(allocator: &'a Allocator) -> Self {
1333        Self {
1334            span: Dummy::dummy(allocator),
1335            r#type: Dummy::dummy(allocator),
1336            decorators: Dummy::dummy(allocator),
1337            key: Dummy::dummy(allocator),
1338            type_annotation: Dummy::dummy(allocator),
1339            value: Dummy::dummy(allocator),
1340            computed: Dummy::dummy(allocator),
1341            r#static: Dummy::dummy(allocator),
1342            r#override: Dummy::dummy(allocator),
1343            definite: Dummy::dummy(allocator),
1344            accessibility: Dummy::dummy(allocator),
1345        }
1346    }
1347}
1348
1349impl<'a> Dummy<'a> for ImportExpression<'a> {
1350    /// Create a dummy [`ImportExpression`].
1351    ///
1352    /// Has cost of making 1 allocation (8 bytes).
1353    fn dummy(allocator: &'a Allocator) -> Self {
1354        Self {
1355            span: Dummy::dummy(allocator),
1356            source: Dummy::dummy(allocator),
1357            options: Dummy::dummy(allocator),
1358            phase: Dummy::dummy(allocator),
1359        }
1360    }
1361}
1362
1363impl<'a> Dummy<'a> for ImportDeclaration<'a> {
1364    /// Create a dummy [`ImportDeclaration`].
1365    ///
1366    /// Does not allocate any data into arena.
1367    fn dummy(allocator: &'a Allocator) -> Self {
1368        Self {
1369            span: Dummy::dummy(allocator),
1370            specifiers: Dummy::dummy(allocator),
1371            source: Dummy::dummy(allocator),
1372            phase: Dummy::dummy(allocator),
1373            with_clause: Dummy::dummy(allocator),
1374            import_kind: Dummy::dummy(allocator),
1375        }
1376    }
1377}
1378
1379impl<'a> Dummy<'a> for ImportPhase {
1380    /// Create a dummy [`ImportPhase`].
1381    ///
1382    /// Does not allocate any data into arena.
1383    #[inline(always)]
1384    fn dummy(allocator: &'a Allocator) -> Self {
1385        Self::Source
1386    }
1387}
1388
1389impl<'a> Dummy<'a> for ImportDeclarationSpecifier<'a> {
1390    /// Create a dummy [`ImportDeclarationSpecifier`].
1391    ///
1392    /// Has cost of making 1 allocation (40 bytes).
1393    fn dummy(allocator: &'a Allocator) -> Self {
1394        Self::ImportDefaultSpecifier(Dummy::dummy(allocator))
1395    }
1396}
1397
1398impl<'a> Dummy<'a> for ImportSpecifier<'a> {
1399    /// Create a dummy [`ImportSpecifier`].
1400    ///
1401    /// Does not allocate any data into arena.
1402    fn dummy(allocator: &'a Allocator) -> Self {
1403        Self {
1404            span: Dummy::dummy(allocator),
1405            imported: Dummy::dummy(allocator),
1406            local: Dummy::dummy(allocator),
1407            import_kind: Dummy::dummy(allocator),
1408        }
1409    }
1410}
1411
1412impl<'a> Dummy<'a> for ImportDefaultSpecifier<'a> {
1413    /// Create a dummy [`ImportDefaultSpecifier`].
1414    ///
1415    /// Does not allocate any data into arena.
1416    fn dummy(allocator: &'a Allocator) -> Self {
1417        Self { span: Dummy::dummy(allocator), local: Dummy::dummy(allocator) }
1418    }
1419}
1420
1421impl<'a> Dummy<'a> for ImportNamespaceSpecifier<'a> {
1422    /// Create a dummy [`ImportNamespaceSpecifier`].
1423    ///
1424    /// Does not allocate any data into arena.
1425    fn dummy(allocator: &'a Allocator) -> Self {
1426        Self { span: Dummy::dummy(allocator), local: Dummy::dummy(allocator) }
1427    }
1428}
1429
1430impl<'a> Dummy<'a> for WithClause<'a> {
1431    /// Create a dummy [`WithClause`].
1432    ///
1433    /// Does not allocate any data into arena.
1434    fn dummy(allocator: &'a Allocator) -> Self {
1435        Self {
1436            span: Dummy::dummy(allocator),
1437            keyword: Dummy::dummy(allocator),
1438            with_entries: Dummy::dummy(allocator),
1439        }
1440    }
1441}
1442
1443impl<'a> Dummy<'a> for WithClauseKeyword {
1444    /// Create a dummy [`WithClauseKeyword`].
1445    ///
1446    /// Does not allocate any data into arena.
1447    #[inline(always)]
1448    fn dummy(allocator: &'a Allocator) -> Self {
1449        Self::With
1450    }
1451}
1452
1453impl<'a> Dummy<'a> for ImportAttribute<'a> {
1454    /// Create a dummy [`ImportAttribute`].
1455    ///
1456    /// Does not allocate any data into arena.
1457    fn dummy(allocator: &'a Allocator) -> Self {
1458        Self {
1459            span: Dummy::dummy(allocator),
1460            key: Dummy::dummy(allocator),
1461            value: Dummy::dummy(allocator),
1462        }
1463    }
1464}
1465
1466impl<'a> Dummy<'a> for ImportAttributeKey<'a> {
1467    /// Create a dummy [`ImportAttributeKey`].
1468    ///
1469    /// Does not allocate any data into arena.
1470    fn dummy(allocator: &'a Allocator) -> Self {
1471        Self::Identifier(Dummy::dummy(allocator))
1472    }
1473}
1474
1475impl<'a> Dummy<'a> for ExportNamedDeclaration<'a> {
1476    /// Create a dummy [`ExportNamedDeclaration`].
1477    ///
1478    /// Does not allocate any data into arena.
1479    fn dummy(allocator: &'a Allocator) -> Self {
1480        Self {
1481            span: Dummy::dummy(allocator),
1482            declaration: Dummy::dummy(allocator),
1483            specifiers: Dummy::dummy(allocator),
1484            source: Dummy::dummy(allocator),
1485            export_kind: Dummy::dummy(allocator),
1486            with_clause: Dummy::dummy(allocator),
1487        }
1488    }
1489}
1490
1491impl<'a> Dummy<'a> for ExportDefaultDeclaration<'a> {
1492    /// Create a dummy [`ExportDefaultDeclaration`].
1493    ///
1494    /// Has cost of making 1 allocation (8 bytes).
1495    fn dummy(allocator: &'a Allocator) -> Self {
1496        Self { span: Dummy::dummy(allocator), declaration: Dummy::dummy(allocator) }
1497    }
1498}
1499
1500impl<'a> Dummy<'a> for ExportAllDeclaration<'a> {
1501    /// Create a dummy [`ExportAllDeclaration`].
1502    ///
1503    /// Does not allocate any data into arena.
1504    fn dummy(allocator: &'a Allocator) -> Self {
1505        Self {
1506            span: Dummy::dummy(allocator),
1507            exported: Dummy::dummy(allocator),
1508            source: Dummy::dummy(allocator),
1509            with_clause: Dummy::dummy(allocator),
1510            export_kind: Dummy::dummy(allocator),
1511        }
1512    }
1513}
1514
1515impl<'a> Dummy<'a> for ExportSpecifier<'a> {
1516    /// Create a dummy [`ExportSpecifier`].
1517    ///
1518    /// Does not allocate any data into arena.
1519    fn dummy(allocator: &'a Allocator) -> Self {
1520        Self {
1521            span: Dummy::dummy(allocator),
1522            local: Dummy::dummy(allocator),
1523            exported: Dummy::dummy(allocator),
1524            export_kind: Dummy::dummy(allocator),
1525        }
1526    }
1527}
1528
1529impl<'a> Dummy<'a> for ExportDefaultDeclarationKind<'a> {
1530    /// Create a dummy [`ExportDefaultDeclarationKind`].
1531    ///
1532    /// Has cost of making 1 allocation (8 bytes).
1533    fn dummy(allocator: &'a Allocator) -> Self {
1534        Self::NullLiteral(Dummy::dummy(allocator))
1535    }
1536}
1537
1538impl<'a> Dummy<'a> for ModuleExportName<'a> {
1539    /// Create a dummy [`ModuleExportName`].
1540    ///
1541    /// Does not allocate any data into arena.
1542    fn dummy(allocator: &'a Allocator) -> Self {
1543        Self::IdentifierName(Dummy::dummy(allocator))
1544    }
1545}
1546
1547impl<'a> Dummy<'a> for V8IntrinsicExpression<'a> {
1548    /// Create a dummy [`V8IntrinsicExpression`].
1549    ///
1550    /// Does not allocate any data into arena.
1551    fn dummy(allocator: &'a Allocator) -> Self {
1552        Self {
1553            span: Dummy::dummy(allocator),
1554            name: Dummy::dummy(allocator),
1555            arguments: Dummy::dummy(allocator),
1556        }
1557    }
1558}
1559
1560impl<'a> Dummy<'a> for BooleanLiteral {
1561    /// Create a dummy [`BooleanLiteral`].
1562    ///
1563    /// Does not allocate any data into arena.
1564    fn dummy(allocator: &'a Allocator) -> Self {
1565        Self { span: Dummy::dummy(allocator), value: Dummy::dummy(allocator) }
1566    }
1567}
1568
1569impl<'a> Dummy<'a> for NullLiteral {
1570    /// Create a dummy [`NullLiteral`].
1571    ///
1572    /// Does not allocate any data into arena.
1573    fn dummy(allocator: &'a Allocator) -> Self {
1574        Self { span: Dummy::dummy(allocator) }
1575    }
1576}
1577
1578impl<'a> Dummy<'a> for NumericLiteral<'a> {
1579    /// Create a dummy [`NumericLiteral`].
1580    ///
1581    /// Does not allocate any data into arena.
1582    fn dummy(allocator: &'a Allocator) -> Self {
1583        Self {
1584            span: Dummy::dummy(allocator),
1585            value: Dummy::dummy(allocator),
1586            raw: Dummy::dummy(allocator),
1587            base: Dummy::dummy(allocator),
1588        }
1589    }
1590}
1591
1592impl<'a> Dummy<'a> for StringLiteral<'a> {
1593    /// Create a dummy [`StringLiteral`].
1594    ///
1595    /// Does not allocate any data into arena.
1596    fn dummy(allocator: &'a Allocator) -> Self {
1597        Self {
1598            span: Dummy::dummy(allocator),
1599            value: Dummy::dummy(allocator),
1600            raw: Dummy::dummy(allocator),
1601            lone_surrogates: Dummy::dummy(allocator),
1602        }
1603    }
1604}
1605
1606impl<'a> Dummy<'a> for BigIntLiteral<'a> {
1607    /// Create a dummy [`BigIntLiteral`].
1608    ///
1609    /// Does not allocate any data into arena.
1610    fn dummy(allocator: &'a Allocator) -> Self {
1611        Self {
1612            span: Dummy::dummy(allocator),
1613            value: Dummy::dummy(allocator),
1614            raw: Dummy::dummy(allocator),
1615            base: Dummy::dummy(allocator),
1616        }
1617    }
1618}
1619
1620impl<'a> Dummy<'a> for RegExpLiteral<'a> {
1621    /// Create a dummy [`RegExpLiteral`].
1622    ///
1623    /// Does not allocate any data into arena.
1624    fn dummy(allocator: &'a Allocator) -> Self {
1625        Self {
1626            span: Dummy::dummy(allocator),
1627            regex: Dummy::dummy(allocator),
1628            raw: Dummy::dummy(allocator),
1629        }
1630    }
1631}
1632
1633impl<'a> Dummy<'a> for RegExp<'a> {
1634    /// Create a dummy [`RegExp`].
1635    ///
1636    /// Does not allocate any data into arena.
1637    fn dummy(allocator: &'a Allocator) -> Self {
1638        Self { pattern: Dummy::dummy(allocator), flags: Dummy::dummy(allocator) }
1639    }
1640}
1641
1642impl<'a> Dummy<'a> for RegExpPattern<'a> {
1643    /// Create a dummy [`RegExpPattern`].
1644    ///
1645    /// Does not allocate any data into arena.
1646    fn dummy(allocator: &'a Allocator) -> Self {
1647        Self { text: Dummy::dummy(allocator), pattern: Dummy::dummy(allocator) }
1648    }
1649}
1650
1651impl<'a> Dummy<'a> for JSXElement<'a> {
1652    /// Create a dummy [`JSXElement`].
1653    ///
1654    /// Has cost of making 2 allocations (64 bytes).
1655    fn dummy(allocator: &'a Allocator) -> Self {
1656        Self {
1657            span: Dummy::dummy(allocator),
1658            opening_element: Dummy::dummy(allocator),
1659            children: Dummy::dummy(allocator),
1660            closing_element: Dummy::dummy(allocator),
1661        }
1662    }
1663}
1664
1665impl<'a> Dummy<'a> for JSXOpeningElement<'a> {
1666    /// Create a dummy [`JSXOpeningElement`].
1667    ///
1668    /// Has cost of making 1 allocation (8 bytes).
1669    fn dummy(allocator: &'a Allocator) -> Self {
1670        Self {
1671            span: Dummy::dummy(allocator),
1672            name: Dummy::dummy(allocator),
1673            type_arguments: Dummy::dummy(allocator),
1674            attributes: Dummy::dummy(allocator),
1675        }
1676    }
1677}
1678
1679impl<'a> Dummy<'a> for JSXClosingElement<'a> {
1680    /// Create a dummy [`JSXClosingElement`].
1681    ///
1682    /// Has cost of making 1 allocation (8 bytes).
1683    fn dummy(allocator: &'a Allocator) -> Self {
1684        Self { span: Dummy::dummy(allocator), name: Dummy::dummy(allocator) }
1685    }
1686}
1687
1688impl<'a> Dummy<'a> for JSXFragment<'a> {
1689    /// Create a dummy [`JSXFragment`].
1690    ///
1691    /// Does not allocate any data into arena.
1692    fn dummy(allocator: &'a Allocator) -> Self {
1693        Self {
1694            span: Dummy::dummy(allocator),
1695            opening_fragment: Dummy::dummy(allocator),
1696            children: Dummy::dummy(allocator),
1697            closing_fragment: Dummy::dummy(allocator),
1698        }
1699    }
1700}
1701
1702impl<'a> Dummy<'a> for JSXOpeningFragment {
1703    /// Create a dummy [`JSXOpeningFragment`].
1704    ///
1705    /// Does not allocate any data into arena.
1706    fn dummy(allocator: &'a Allocator) -> Self {
1707        Self { span: Dummy::dummy(allocator) }
1708    }
1709}
1710
1711impl<'a> Dummy<'a> for JSXClosingFragment {
1712    /// Create a dummy [`JSXClosingFragment`].
1713    ///
1714    /// Does not allocate any data into arena.
1715    fn dummy(allocator: &'a Allocator) -> Self {
1716        Self { span: Dummy::dummy(allocator) }
1717    }
1718}
1719
1720impl<'a> Dummy<'a> for JSXElementName<'a> {
1721    /// Create a dummy [`JSXElementName`].
1722    ///
1723    /// Has cost of making 1 allocation (8 bytes).
1724    fn dummy(allocator: &'a Allocator) -> Self {
1725        Self::ThisExpression(Dummy::dummy(allocator))
1726    }
1727}
1728
1729impl<'a> Dummy<'a> for JSXNamespacedName<'a> {
1730    /// Create a dummy [`JSXNamespacedName`].
1731    ///
1732    /// Does not allocate any data into arena.
1733    fn dummy(allocator: &'a Allocator) -> Self {
1734        Self {
1735            span: Dummy::dummy(allocator),
1736            namespace: Dummy::dummy(allocator),
1737            name: Dummy::dummy(allocator),
1738        }
1739    }
1740}
1741
1742impl<'a> Dummy<'a> for JSXMemberExpression<'a> {
1743    /// Create a dummy [`JSXMemberExpression`].
1744    ///
1745    /// Has cost of making 1 allocation (8 bytes).
1746    fn dummy(allocator: &'a Allocator) -> Self {
1747        Self {
1748            span: Dummy::dummy(allocator),
1749            object: Dummy::dummy(allocator),
1750            property: Dummy::dummy(allocator),
1751        }
1752    }
1753}
1754
1755impl<'a> Dummy<'a> for JSXMemberExpressionObject<'a> {
1756    /// Create a dummy [`JSXMemberExpressionObject`].
1757    ///
1758    /// Has cost of making 1 allocation (8 bytes).
1759    fn dummy(allocator: &'a Allocator) -> Self {
1760        Self::ThisExpression(Dummy::dummy(allocator))
1761    }
1762}
1763
1764impl<'a> Dummy<'a> for JSXExpressionContainer<'a> {
1765    /// Create a dummy [`JSXExpressionContainer`].
1766    ///
1767    /// Does not allocate any data into arena.
1768    fn dummy(allocator: &'a Allocator) -> Self {
1769        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
1770    }
1771}
1772
1773impl<'a> Dummy<'a> for JSXExpression<'a> {
1774    /// Create a dummy [`JSXExpression`].
1775    ///
1776    /// Does not allocate any data into arena.
1777    fn dummy(allocator: &'a Allocator) -> Self {
1778        Self::EmptyExpression(Dummy::dummy(allocator))
1779    }
1780}
1781
1782impl<'a> Dummy<'a> for JSXEmptyExpression {
1783    /// Create a dummy [`JSXEmptyExpression`].
1784    ///
1785    /// Does not allocate any data into arena.
1786    fn dummy(allocator: &'a Allocator) -> Self {
1787        Self { span: Dummy::dummy(allocator) }
1788    }
1789}
1790
1791impl<'a> Dummy<'a> for JSXAttributeItem<'a> {
1792    /// Create a dummy [`JSXAttributeItem`].
1793    ///
1794    /// Has cost of making 2 allocations (32 bytes).
1795    fn dummy(allocator: &'a Allocator) -> Self {
1796        Self::SpreadAttribute(Dummy::dummy(allocator))
1797    }
1798}
1799
1800impl<'a> Dummy<'a> for JSXAttribute<'a> {
1801    /// Create a dummy [`JSXAttribute`].
1802    ///
1803    /// Has cost of making 1 allocation (24 bytes).
1804    fn dummy(allocator: &'a Allocator) -> Self {
1805        Self {
1806            span: Dummy::dummy(allocator),
1807            name: Dummy::dummy(allocator),
1808            value: Dummy::dummy(allocator),
1809        }
1810    }
1811}
1812
1813impl<'a> Dummy<'a> for JSXSpreadAttribute<'a> {
1814    /// Create a dummy [`JSXSpreadAttribute`].
1815    ///
1816    /// Has cost of making 1 allocation (8 bytes).
1817    fn dummy(allocator: &'a Allocator) -> Self {
1818        Self { span: Dummy::dummy(allocator), argument: Dummy::dummy(allocator) }
1819    }
1820}
1821
1822impl<'a> Dummy<'a> for JSXAttributeName<'a> {
1823    /// Create a dummy [`JSXAttributeName`].
1824    ///
1825    /// Has cost of making 1 allocation (24 bytes).
1826    fn dummy(allocator: &'a Allocator) -> Self {
1827        Self::Identifier(Dummy::dummy(allocator))
1828    }
1829}
1830
1831impl<'a> Dummy<'a> for JSXAttributeValue<'a> {
1832    /// Create a dummy [`JSXAttributeValue`].
1833    ///
1834    /// Has cost of making 1 allocation (24 bytes).
1835    fn dummy(allocator: &'a Allocator) -> Self {
1836        Self::ExpressionContainer(Dummy::dummy(allocator))
1837    }
1838}
1839
1840impl<'a> Dummy<'a> for JSXIdentifier<'a> {
1841    /// Create a dummy [`JSXIdentifier`].
1842    ///
1843    /// Does not allocate any data into arena.
1844    fn dummy(allocator: &'a Allocator) -> Self {
1845        Self { span: Dummy::dummy(allocator), name: Dummy::dummy(allocator) }
1846    }
1847}
1848
1849impl<'a> Dummy<'a> for JSXChild<'a> {
1850    /// Create a dummy [`JSXChild`].
1851    ///
1852    /// Has cost of making 1 allocation (24 bytes).
1853    fn dummy(allocator: &'a Allocator) -> Self {
1854        Self::ExpressionContainer(Dummy::dummy(allocator))
1855    }
1856}
1857
1858impl<'a> Dummy<'a> for JSXSpreadChild<'a> {
1859    /// Create a dummy [`JSXSpreadChild`].
1860    ///
1861    /// Has cost of making 1 allocation (8 bytes).
1862    fn dummy(allocator: &'a Allocator) -> Self {
1863        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
1864    }
1865}
1866
1867impl<'a> Dummy<'a> for JSXText<'a> {
1868    /// Create a dummy [`JSXText`].
1869    ///
1870    /// Does not allocate any data into arena.
1871    fn dummy(allocator: &'a Allocator) -> Self {
1872        Self {
1873            span: Dummy::dummy(allocator),
1874            value: Dummy::dummy(allocator),
1875            raw: Dummy::dummy(allocator),
1876        }
1877    }
1878}
1879
1880impl<'a> Dummy<'a> for TSThisParameter<'a> {
1881    /// Create a dummy [`TSThisParameter`].
1882    ///
1883    /// Does not allocate any data into arena.
1884    fn dummy(allocator: &'a Allocator) -> Self {
1885        Self {
1886            span: Dummy::dummy(allocator),
1887            this_span: Dummy::dummy(allocator),
1888            type_annotation: Dummy::dummy(allocator),
1889        }
1890    }
1891}
1892
1893impl<'a> Dummy<'a> for TSEnumDeclaration<'a> {
1894    /// Create a dummy [`TSEnumDeclaration`].
1895    ///
1896    /// Does not allocate any data into arena.
1897    fn dummy(allocator: &'a Allocator) -> Self {
1898        Self {
1899            span: Dummy::dummy(allocator),
1900            id: Dummy::dummy(allocator),
1901            body: Dummy::dummy(allocator),
1902            r#const: Dummy::dummy(allocator),
1903            declare: Dummy::dummy(allocator),
1904            scope_id: Dummy::dummy(allocator),
1905        }
1906    }
1907}
1908
1909impl<'a> Dummy<'a> for TSEnumBody<'a> {
1910    /// Create a dummy [`TSEnumBody`].
1911    ///
1912    /// Does not allocate any data into arena.
1913    fn dummy(allocator: &'a Allocator) -> Self {
1914        Self { span: Dummy::dummy(allocator), members: Dummy::dummy(allocator) }
1915    }
1916}
1917
1918impl<'a> Dummy<'a> for TSEnumMember<'a> {
1919    /// Create a dummy [`TSEnumMember`].
1920    ///
1921    /// Has cost of making 1 allocation (24 bytes).
1922    fn dummy(allocator: &'a Allocator) -> Self {
1923        Self {
1924            span: Dummy::dummy(allocator),
1925            id: Dummy::dummy(allocator),
1926            initializer: Dummy::dummy(allocator),
1927        }
1928    }
1929}
1930
1931impl<'a> Dummy<'a> for TSEnumMemberName<'a> {
1932    /// Create a dummy [`TSEnumMemberName`].
1933    ///
1934    /// Has cost of making 1 allocation (24 bytes).
1935    fn dummy(allocator: &'a Allocator) -> Self {
1936        Self::Identifier(Dummy::dummy(allocator))
1937    }
1938}
1939
1940impl<'a> Dummy<'a> for TSTypeAnnotation<'a> {
1941    /// Create a dummy [`TSTypeAnnotation`].
1942    ///
1943    /// Has cost of making 1 allocation (8 bytes).
1944    fn dummy(allocator: &'a Allocator) -> Self {
1945        Self { span: Dummy::dummy(allocator), type_annotation: Dummy::dummy(allocator) }
1946    }
1947}
1948
1949impl<'a> Dummy<'a> for TSLiteralType<'a> {
1950    /// Create a dummy [`TSLiteralType`].
1951    ///
1952    /// Has cost of making 1 allocation (16 bytes).
1953    fn dummy(allocator: &'a Allocator) -> Self {
1954        Self { span: Dummy::dummy(allocator), literal: Dummy::dummy(allocator) }
1955    }
1956}
1957
1958impl<'a> Dummy<'a> for TSLiteral<'a> {
1959    /// Create a dummy [`TSLiteral`].
1960    ///
1961    /// Has cost of making 1 allocation (16 bytes).
1962    fn dummy(allocator: &'a Allocator) -> Self {
1963        Self::BooleanLiteral(Dummy::dummy(allocator))
1964    }
1965}
1966
1967impl<'a> Dummy<'a> for TSType<'a> {
1968    /// Create a dummy [`TSType`].
1969    ///
1970    /// Has cost of making 1 allocation (8 bytes).
1971    fn dummy(allocator: &'a Allocator) -> Self {
1972        Self::TSAnyKeyword(Dummy::dummy(allocator))
1973    }
1974}
1975
1976impl<'a> Dummy<'a> for TSConditionalType<'a> {
1977    /// Create a dummy [`TSConditionalType`].
1978    ///
1979    /// Has cost of making 4 allocations (32 bytes).
1980    fn dummy(allocator: &'a Allocator) -> Self {
1981        Self {
1982            span: Dummy::dummy(allocator),
1983            check_type: Dummy::dummy(allocator),
1984            extends_type: Dummy::dummy(allocator),
1985            true_type: Dummy::dummy(allocator),
1986            false_type: Dummy::dummy(allocator),
1987            scope_id: Dummy::dummy(allocator),
1988        }
1989    }
1990}
1991
1992impl<'a> Dummy<'a> for TSUnionType<'a> {
1993    /// Create a dummy [`TSUnionType`].
1994    ///
1995    /// Does not allocate any data into arena.
1996    fn dummy(allocator: &'a Allocator) -> Self {
1997        Self { span: Dummy::dummy(allocator), types: Dummy::dummy(allocator) }
1998    }
1999}
2000
2001impl<'a> Dummy<'a> for TSIntersectionType<'a> {
2002    /// Create a dummy [`TSIntersectionType`].
2003    ///
2004    /// Does not allocate any data into arena.
2005    fn dummy(allocator: &'a Allocator) -> Self {
2006        Self { span: Dummy::dummy(allocator), types: Dummy::dummy(allocator) }
2007    }
2008}
2009
2010impl<'a> Dummy<'a> for TSParenthesizedType<'a> {
2011    /// Create a dummy [`TSParenthesizedType`].
2012    ///
2013    /// Has cost of making 1 allocation (8 bytes).
2014    fn dummy(allocator: &'a Allocator) -> Self {
2015        Self { span: Dummy::dummy(allocator), type_annotation: Dummy::dummy(allocator) }
2016    }
2017}
2018
2019impl<'a> Dummy<'a> for TSTypeOperator<'a> {
2020    /// Create a dummy [`TSTypeOperator`].
2021    ///
2022    /// Has cost of making 1 allocation (8 bytes).
2023    fn dummy(allocator: &'a Allocator) -> Self {
2024        Self {
2025            span: Dummy::dummy(allocator),
2026            operator: Dummy::dummy(allocator),
2027            type_annotation: Dummy::dummy(allocator),
2028        }
2029    }
2030}
2031
2032impl<'a> Dummy<'a> for TSTypeOperatorOperator {
2033    /// Create a dummy [`TSTypeOperatorOperator`].
2034    ///
2035    /// Does not allocate any data into arena.
2036    #[inline(always)]
2037    fn dummy(allocator: &'a Allocator) -> Self {
2038        Self::Keyof
2039    }
2040}
2041
2042impl<'a> Dummy<'a> for TSArrayType<'a> {
2043    /// Create a dummy [`TSArrayType`].
2044    ///
2045    /// Has cost of making 1 allocation (8 bytes).
2046    fn dummy(allocator: &'a Allocator) -> Self {
2047        Self { span: Dummy::dummy(allocator), element_type: Dummy::dummy(allocator) }
2048    }
2049}
2050
2051impl<'a> Dummy<'a> for TSIndexedAccessType<'a> {
2052    /// Create a dummy [`TSIndexedAccessType`].
2053    ///
2054    /// Has cost of making 2 allocations (16 bytes).
2055    fn dummy(allocator: &'a Allocator) -> Self {
2056        Self {
2057            span: Dummy::dummy(allocator),
2058            object_type: Dummy::dummy(allocator),
2059            index_type: Dummy::dummy(allocator),
2060        }
2061    }
2062}
2063
2064impl<'a> Dummy<'a> for TSTupleType<'a> {
2065    /// Create a dummy [`TSTupleType`].
2066    ///
2067    /// Does not allocate any data into arena.
2068    fn dummy(allocator: &'a Allocator) -> Self {
2069        Self { span: Dummy::dummy(allocator), element_types: Dummy::dummy(allocator) }
2070    }
2071}
2072
2073impl<'a> Dummy<'a> for TSNamedTupleMember<'a> {
2074    /// Create a dummy [`TSNamedTupleMember`].
2075    ///
2076    /// Has cost of making 1 allocation (8 bytes).
2077    fn dummy(allocator: &'a Allocator) -> Self {
2078        Self {
2079            span: Dummy::dummy(allocator),
2080            label: Dummy::dummy(allocator),
2081            element_type: Dummy::dummy(allocator),
2082            optional: Dummy::dummy(allocator),
2083        }
2084    }
2085}
2086
2087impl<'a> Dummy<'a> for TSOptionalType<'a> {
2088    /// Create a dummy [`TSOptionalType`].
2089    ///
2090    /// Has cost of making 1 allocation (8 bytes).
2091    fn dummy(allocator: &'a Allocator) -> Self {
2092        Self { span: Dummy::dummy(allocator), type_annotation: Dummy::dummy(allocator) }
2093    }
2094}
2095
2096impl<'a> Dummy<'a> for TSRestType<'a> {
2097    /// Create a dummy [`TSRestType`].
2098    ///
2099    /// Has cost of making 1 allocation (8 bytes).
2100    fn dummy(allocator: &'a Allocator) -> Self {
2101        Self { span: Dummy::dummy(allocator), type_annotation: Dummy::dummy(allocator) }
2102    }
2103}
2104
2105impl<'a> Dummy<'a> for TSTupleElement<'a> {
2106    /// Create a dummy [`TSTupleElement`].
2107    ///
2108    /// Has cost of making 1 allocation (8 bytes).
2109    fn dummy(allocator: &'a Allocator) -> Self {
2110        Self::TSAnyKeyword(Dummy::dummy(allocator))
2111    }
2112}
2113
2114impl<'a> Dummy<'a> for TSAnyKeyword {
2115    /// Create a dummy [`TSAnyKeyword`].
2116    ///
2117    /// Does not allocate any data into arena.
2118    fn dummy(allocator: &'a Allocator) -> Self {
2119        Self { span: Dummy::dummy(allocator) }
2120    }
2121}
2122
2123impl<'a> Dummy<'a> for TSStringKeyword {
2124    /// Create a dummy [`TSStringKeyword`].
2125    ///
2126    /// Does not allocate any data into arena.
2127    fn dummy(allocator: &'a Allocator) -> Self {
2128        Self { span: Dummy::dummy(allocator) }
2129    }
2130}
2131
2132impl<'a> Dummy<'a> for TSBooleanKeyword {
2133    /// Create a dummy [`TSBooleanKeyword`].
2134    ///
2135    /// Does not allocate any data into arena.
2136    fn dummy(allocator: &'a Allocator) -> Self {
2137        Self { span: Dummy::dummy(allocator) }
2138    }
2139}
2140
2141impl<'a> Dummy<'a> for TSNumberKeyword {
2142    /// Create a dummy [`TSNumberKeyword`].
2143    ///
2144    /// Does not allocate any data into arena.
2145    fn dummy(allocator: &'a Allocator) -> Self {
2146        Self { span: Dummy::dummy(allocator) }
2147    }
2148}
2149
2150impl<'a> Dummy<'a> for TSNeverKeyword {
2151    /// Create a dummy [`TSNeverKeyword`].
2152    ///
2153    /// Does not allocate any data into arena.
2154    fn dummy(allocator: &'a Allocator) -> Self {
2155        Self { span: Dummy::dummy(allocator) }
2156    }
2157}
2158
2159impl<'a> Dummy<'a> for TSIntrinsicKeyword {
2160    /// Create a dummy [`TSIntrinsicKeyword`].
2161    ///
2162    /// Does not allocate any data into arena.
2163    fn dummy(allocator: &'a Allocator) -> Self {
2164        Self { span: Dummy::dummy(allocator) }
2165    }
2166}
2167
2168impl<'a> Dummy<'a> for TSUnknownKeyword {
2169    /// Create a dummy [`TSUnknownKeyword`].
2170    ///
2171    /// Does not allocate any data into arena.
2172    fn dummy(allocator: &'a Allocator) -> Self {
2173        Self { span: Dummy::dummy(allocator) }
2174    }
2175}
2176
2177impl<'a> Dummy<'a> for TSNullKeyword {
2178    /// Create a dummy [`TSNullKeyword`].
2179    ///
2180    /// Does not allocate any data into arena.
2181    fn dummy(allocator: &'a Allocator) -> Self {
2182        Self { span: Dummy::dummy(allocator) }
2183    }
2184}
2185
2186impl<'a> Dummy<'a> for TSUndefinedKeyword {
2187    /// Create a dummy [`TSUndefinedKeyword`].
2188    ///
2189    /// Does not allocate any data into arena.
2190    fn dummy(allocator: &'a Allocator) -> Self {
2191        Self { span: Dummy::dummy(allocator) }
2192    }
2193}
2194
2195impl<'a> Dummy<'a> for TSVoidKeyword {
2196    /// Create a dummy [`TSVoidKeyword`].
2197    ///
2198    /// Does not allocate any data into arena.
2199    fn dummy(allocator: &'a Allocator) -> Self {
2200        Self { span: Dummy::dummy(allocator) }
2201    }
2202}
2203
2204impl<'a> Dummy<'a> for TSSymbolKeyword {
2205    /// Create a dummy [`TSSymbolKeyword`].
2206    ///
2207    /// Does not allocate any data into arena.
2208    fn dummy(allocator: &'a Allocator) -> Self {
2209        Self { span: Dummy::dummy(allocator) }
2210    }
2211}
2212
2213impl<'a> Dummy<'a> for TSThisType {
2214    /// Create a dummy [`TSThisType`].
2215    ///
2216    /// Does not allocate any data into arena.
2217    fn dummy(allocator: &'a Allocator) -> Self {
2218        Self { span: Dummy::dummy(allocator) }
2219    }
2220}
2221
2222impl<'a> Dummy<'a> for TSObjectKeyword {
2223    /// Create a dummy [`TSObjectKeyword`].
2224    ///
2225    /// Does not allocate any data into arena.
2226    fn dummy(allocator: &'a Allocator) -> Self {
2227        Self { span: Dummy::dummy(allocator) }
2228    }
2229}
2230
2231impl<'a> Dummy<'a> for TSBigIntKeyword {
2232    /// Create a dummy [`TSBigIntKeyword`].
2233    ///
2234    /// Does not allocate any data into arena.
2235    fn dummy(allocator: &'a Allocator) -> Self {
2236        Self { span: Dummy::dummy(allocator) }
2237    }
2238}
2239
2240impl<'a> Dummy<'a> for TSTypeReference<'a> {
2241    /// Create a dummy [`TSTypeReference`].
2242    ///
2243    /// Has cost of making 1 allocation (8 bytes).
2244    fn dummy(allocator: &'a Allocator) -> Self {
2245        Self {
2246            span: Dummy::dummy(allocator),
2247            type_name: Dummy::dummy(allocator),
2248            type_arguments: Dummy::dummy(allocator),
2249        }
2250    }
2251}
2252
2253impl<'a> Dummy<'a> for TSTypeName<'a> {
2254    /// Create a dummy [`TSTypeName`].
2255    ///
2256    /// Has cost of making 1 allocation (8 bytes).
2257    fn dummy(allocator: &'a Allocator) -> Self {
2258        Self::ThisExpression(Dummy::dummy(allocator))
2259    }
2260}
2261
2262impl<'a> Dummy<'a> for TSQualifiedName<'a> {
2263    /// Create a dummy [`TSQualifiedName`].
2264    ///
2265    /// Has cost of making 1 allocation (8 bytes).
2266    fn dummy(allocator: &'a Allocator) -> Self {
2267        Self {
2268            span: Dummy::dummy(allocator),
2269            left: Dummy::dummy(allocator),
2270            right: Dummy::dummy(allocator),
2271        }
2272    }
2273}
2274
2275impl<'a> Dummy<'a> for TSTypeParameterInstantiation<'a> {
2276    /// Create a dummy [`TSTypeParameterInstantiation`].
2277    ///
2278    /// Does not allocate any data into arena.
2279    fn dummy(allocator: &'a Allocator) -> Self {
2280        Self { span: Dummy::dummy(allocator), params: Dummy::dummy(allocator) }
2281    }
2282}
2283
2284impl<'a> Dummy<'a> for TSTypeParameter<'a> {
2285    /// Create a dummy [`TSTypeParameter`].
2286    ///
2287    /// Does not allocate any data into arena.
2288    fn dummy(allocator: &'a Allocator) -> Self {
2289        Self {
2290            span: Dummy::dummy(allocator),
2291            name: Dummy::dummy(allocator),
2292            constraint: Dummy::dummy(allocator),
2293            default: Dummy::dummy(allocator),
2294            r#in: Dummy::dummy(allocator),
2295            out: Dummy::dummy(allocator),
2296            r#const: Dummy::dummy(allocator),
2297        }
2298    }
2299}
2300
2301impl<'a> Dummy<'a> for TSTypeParameterDeclaration<'a> {
2302    /// Create a dummy [`TSTypeParameterDeclaration`].
2303    ///
2304    /// Does not allocate any data into arena.
2305    fn dummy(allocator: &'a Allocator) -> Self {
2306        Self { span: Dummy::dummy(allocator), params: Dummy::dummy(allocator) }
2307    }
2308}
2309
2310impl<'a> Dummy<'a> for TSTypeAliasDeclaration<'a> {
2311    /// Create a dummy [`TSTypeAliasDeclaration`].
2312    ///
2313    /// Has cost of making 1 allocation (8 bytes).
2314    fn dummy(allocator: &'a Allocator) -> Self {
2315        Self {
2316            span: Dummy::dummy(allocator),
2317            id: Dummy::dummy(allocator),
2318            type_parameters: Dummy::dummy(allocator),
2319            type_annotation: Dummy::dummy(allocator),
2320            declare: Dummy::dummy(allocator),
2321            scope_id: Dummy::dummy(allocator),
2322        }
2323    }
2324}
2325
2326impl<'a> Dummy<'a> for TSAccessibility {
2327    /// Create a dummy [`TSAccessibility`].
2328    ///
2329    /// Does not allocate any data into arena.
2330    #[inline(always)]
2331    fn dummy(allocator: &'a Allocator) -> Self {
2332        Self::Private
2333    }
2334}
2335
2336impl<'a> Dummy<'a> for TSClassImplements<'a> {
2337    /// Create a dummy [`TSClassImplements`].
2338    ///
2339    /// Has cost of making 1 allocation (8 bytes).
2340    fn dummy(allocator: &'a Allocator) -> Self {
2341        Self {
2342            span: Dummy::dummy(allocator),
2343            expression: Dummy::dummy(allocator),
2344            type_arguments: Dummy::dummy(allocator),
2345        }
2346    }
2347}
2348
2349impl<'a> Dummy<'a> for TSInterfaceDeclaration<'a> {
2350    /// Create a dummy [`TSInterfaceDeclaration`].
2351    ///
2352    /// Has cost of making 1 allocation (32 bytes).
2353    fn dummy(allocator: &'a Allocator) -> Self {
2354        Self {
2355            span: Dummy::dummy(allocator),
2356            id: Dummy::dummy(allocator),
2357            type_parameters: Dummy::dummy(allocator),
2358            extends: Dummy::dummy(allocator),
2359            body: Dummy::dummy(allocator),
2360            declare: Dummy::dummy(allocator),
2361            scope_id: Dummy::dummy(allocator),
2362        }
2363    }
2364}
2365
2366impl<'a> Dummy<'a> for TSInterfaceBody<'a> {
2367    /// Create a dummy [`TSInterfaceBody`].
2368    ///
2369    /// Does not allocate any data into arena.
2370    fn dummy(allocator: &'a Allocator) -> Self {
2371        Self { span: Dummy::dummy(allocator), body: Dummy::dummy(allocator) }
2372    }
2373}
2374
2375impl<'a> Dummy<'a> for TSPropertySignature<'a> {
2376    /// Create a dummy [`TSPropertySignature`].
2377    ///
2378    /// Has cost of making 1 allocation (8 bytes).
2379    fn dummy(allocator: &'a Allocator) -> Self {
2380        Self {
2381            span: Dummy::dummy(allocator),
2382            computed: Dummy::dummy(allocator),
2383            optional: Dummy::dummy(allocator),
2384            readonly: Dummy::dummy(allocator),
2385            key: Dummy::dummy(allocator),
2386            type_annotation: Dummy::dummy(allocator),
2387        }
2388    }
2389}
2390
2391impl<'a> Dummy<'a> for TSSignature<'a> {
2392    /// Create a dummy [`TSSignature`].
2393    ///
2394    /// Has cost of making 2 allocations (48 bytes).
2395    fn dummy(allocator: &'a Allocator) -> Self {
2396        Self::TSPropertySignature(Dummy::dummy(allocator))
2397    }
2398}
2399
2400impl<'a> Dummy<'a> for TSIndexSignature<'a> {
2401    /// Create a dummy [`TSIndexSignature`].
2402    ///
2403    /// Has cost of making 2 allocations (32 bytes).
2404    fn dummy(allocator: &'a Allocator) -> Self {
2405        Self {
2406            span: Dummy::dummy(allocator),
2407            parameters: Dummy::dummy(allocator),
2408            type_annotation: Dummy::dummy(allocator),
2409            readonly: Dummy::dummy(allocator),
2410            r#static: Dummy::dummy(allocator),
2411        }
2412    }
2413}
2414
2415impl<'a> Dummy<'a> for TSCallSignatureDeclaration<'a> {
2416    /// Create a dummy [`TSCallSignatureDeclaration`].
2417    ///
2418    /// Has cost of making 1 allocation (48 bytes).
2419    fn dummy(allocator: &'a Allocator) -> Self {
2420        Self {
2421            span: Dummy::dummy(allocator),
2422            type_parameters: Dummy::dummy(allocator),
2423            this_param: Dummy::dummy(allocator),
2424            params: Dummy::dummy(allocator),
2425            return_type: Dummy::dummy(allocator),
2426        }
2427    }
2428}
2429
2430impl<'a> Dummy<'a> for TSMethodSignatureKind {
2431    /// Create a dummy [`TSMethodSignatureKind`].
2432    ///
2433    /// Does not allocate any data into arena.
2434    #[inline(always)]
2435    fn dummy(allocator: &'a Allocator) -> Self {
2436        Self::Method
2437    }
2438}
2439
2440impl<'a> Dummy<'a> for TSMethodSignature<'a> {
2441    /// Create a dummy [`TSMethodSignature`].
2442    ///
2443    /// Has cost of making 2 allocations (56 bytes).
2444    fn dummy(allocator: &'a Allocator) -> Self {
2445        Self {
2446            span: Dummy::dummy(allocator),
2447            key: Dummy::dummy(allocator),
2448            computed: Dummy::dummy(allocator),
2449            optional: Dummy::dummy(allocator),
2450            kind: Dummy::dummy(allocator),
2451            type_parameters: Dummy::dummy(allocator),
2452            this_param: Dummy::dummy(allocator),
2453            params: Dummy::dummy(allocator),
2454            return_type: Dummy::dummy(allocator),
2455            scope_id: Dummy::dummy(allocator),
2456        }
2457    }
2458}
2459
2460impl<'a> Dummy<'a> for TSConstructSignatureDeclaration<'a> {
2461    /// Create a dummy [`TSConstructSignatureDeclaration`].
2462    ///
2463    /// Has cost of making 1 allocation (48 bytes).
2464    fn dummy(allocator: &'a Allocator) -> Self {
2465        Self {
2466            span: Dummy::dummy(allocator),
2467            type_parameters: Dummy::dummy(allocator),
2468            params: Dummy::dummy(allocator),
2469            return_type: Dummy::dummy(allocator),
2470            scope_id: Dummy::dummy(allocator),
2471        }
2472    }
2473}
2474
2475impl<'a> Dummy<'a> for TSIndexSignatureName<'a> {
2476    /// Create a dummy [`TSIndexSignatureName`].
2477    ///
2478    /// Has cost of making 2 allocations (32 bytes).
2479    fn dummy(allocator: &'a Allocator) -> Self {
2480        Self {
2481            span: Dummy::dummy(allocator),
2482            name: Dummy::dummy(allocator),
2483            type_annotation: Dummy::dummy(allocator),
2484        }
2485    }
2486}
2487
2488impl<'a> Dummy<'a> for TSInterfaceHeritage<'a> {
2489    /// Create a dummy [`TSInterfaceHeritage`].
2490    ///
2491    /// Has cost of making 1 allocation (8 bytes).
2492    fn dummy(allocator: &'a Allocator) -> Self {
2493        Self {
2494            span: Dummy::dummy(allocator),
2495            expression: Dummy::dummy(allocator),
2496            type_arguments: Dummy::dummy(allocator),
2497        }
2498    }
2499}
2500
2501impl<'a> Dummy<'a> for TSTypePredicate<'a> {
2502    /// Create a dummy [`TSTypePredicate`].
2503    ///
2504    /// Does not allocate any data into arena.
2505    fn dummy(allocator: &'a Allocator) -> Self {
2506        Self {
2507            span: Dummy::dummy(allocator),
2508            parameter_name: Dummy::dummy(allocator),
2509            asserts: Dummy::dummy(allocator),
2510            type_annotation: Dummy::dummy(allocator),
2511        }
2512    }
2513}
2514
2515impl<'a> Dummy<'a> for TSTypePredicateName<'a> {
2516    /// Create a dummy [`TSTypePredicateName`].
2517    ///
2518    /// Does not allocate any data into arena.
2519    fn dummy(allocator: &'a Allocator) -> Self {
2520        Self::This(Dummy::dummy(allocator))
2521    }
2522}
2523
2524impl<'a> Dummy<'a> for TSModuleDeclaration<'a> {
2525    /// Create a dummy [`TSModuleDeclaration`].
2526    ///
2527    /// Does not allocate any data into arena.
2528    fn dummy(allocator: &'a Allocator) -> Self {
2529        Self {
2530            span: Dummy::dummy(allocator),
2531            id: Dummy::dummy(allocator),
2532            body: Dummy::dummy(allocator),
2533            kind: Dummy::dummy(allocator),
2534            declare: Dummy::dummy(allocator),
2535            scope_id: Dummy::dummy(allocator),
2536        }
2537    }
2538}
2539
2540impl<'a> Dummy<'a> for TSModuleDeclarationKind {
2541    /// Create a dummy [`TSModuleDeclarationKind`].
2542    ///
2543    /// Does not allocate any data into arena.
2544    #[inline(always)]
2545    fn dummy(allocator: &'a Allocator) -> Self {
2546        Self::Global
2547    }
2548}
2549
2550impl<'a> Dummy<'a> for TSModuleDeclarationName<'a> {
2551    /// Create a dummy [`TSModuleDeclarationName`].
2552    ///
2553    /// Does not allocate any data into arena.
2554    fn dummy(allocator: &'a Allocator) -> Self {
2555        Self::Identifier(Dummy::dummy(allocator))
2556    }
2557}
2558
2559impl<'a> Dummy<'a> for TSModuleDeclarationBody<'a> {
2560    /// Create a dummy [`TSModuleDeclarationBody`].
2561    ///
2562    /// Has cost of making 1 allocation (56 bytes).
2563    fn dummy(allocator: &'a Allocator) -> Self {
2564        Self::TSModuleBlock(Dummy::dummy(allocator))
2565    }
2566}
2567
2568impl<'a> Dummy<'a> for TSModuleBlock<'a> {
2569    /// Create a dummy [`TSModuleBlock`].
2570    ///
2571    /// Does not allocate any data into arena.
2572    fn dummy(allocator: &'a Allocator) -> Self {
2573        Self {
2574            span: Dummy::dummy(allocator),
2575            directives: Dummy::dummy(allocator),
2576            body: Dummy::dummy(allocator),
2577        }
2578    }
2579}
2580
2581impl<'a> Dummy<'a> for TSTypeLiteral<'a> {
2582    /// Create a dummy [`TSTypeLiteral`].
2583    ///
2584    /// Does not allocate any data into arena.
2585    fn dummy(allocator: &'a Allocator) -> Self {
2586        Self { span: Dummy::dummy(allocator), members: Dummy::dummy(allocator) }
2587    }
2588}
2589
2590impl<'a> Dummy<'a> for TSInferType<'a> {
2591    /// Create a dummy [`TSInferType`].
2592    ///
2593    /// Has cost of making 1 allocation (80 bytes).
2594    fn dummy(allocator: &'a Allocator) -> Self {
2595        Self { span: Dummy::dummy(allocator), type_parameter: Dummy::dummy(allocator) }
2596    }
2597}
2598
2599impl<'a> Dummy<'a> for TSTypeQuery<'a> {
2600    /// Create a dummy [`TSTypeQuery`].
2601    ///
2602    /// Has cost of making 1 allocation (8 bytes).
2603    fn dummy(allocator: &'a Allocator) -> Self {
2604        Self {
2605            span: Dummy::dummy(allocator),
2606            expr_name: Dummy::dummy(allocator),
2607            type_arguments: Dummy::dummy(allocator),
2608        }
2609    }
2610}
2611
2612impl<'a> Dummy<'a> for TSTypeQueryExprName<'a> {
2613    /// Create a dummy [`TSTypeQueryExprName`].
2614    ///
2615    /// Has cost of making 1 allocation (8 bytes).
2616    fn dummy(allocator: &'a Allocator) -> Self {
2617        Self::ThisExpression(Dummy::dummy(allocator))
2618    }
2619}
2620
2621impl<'a> Dummy<'a> for TSImportType<'a> {
2622    /// Create a dummy [`TSImportType`].
2623    ///
2624    /// Has cost of making 1 allocation (8 bytes).
2625    fn dummy(allocator: &'a Allocator) -> Self {
2626        Self {
2627            span: Dummy::dummy(allocator),
2628            argument: Dummy::dummy(allocator),
2629            options: Dummy::dummy(allocator),
2630            qualifier: Dummy::dummy(allocator),
2631            type_arguments: Dummy::dummy(allocator),
2632        }
2633    }
2634}
2635
2636impl<'a> Dummy<'a> for TSImportTypeQualifier<'a> {
2637    /// Create a dummy [`TSImportTypeQualifier`].
2638    ///
2639    /// Has cost of making 1 allocation (24 bytes).
2640    fn dummy(allocator: &'a Allocator) -> Self {
2641        Self::Identifier(Dummy::dummy(allocator))
2642    }
2643}
2644
2645impl<'a> Dummy<'a> for TSImportTypeQualifiedName<'a> {
2646    /// Create a dummy [`TSImportTypeQualifiedName`].
2647    ///
2648    /// Has cost of making 1 allocation (24 bytes).
2649    fn dummy(allocator: &'a Allocator) -> Self {
2650        Self {
2651            span: Dummy::dummy(allocator),
2652            left: Dummy::dummy(allocator),
2653            right: Dummy::dummy(allocator),
2654        }
2655    }
2656}
2657
2658impl<'a> Dummy<'a> for TSFunctionType<'a> {
2659    /// Create a dummy [`TSFunctionType`].
2660    ///
2661    /// Has cost of making 3 allocations (80 bytes).
2662    fn dummy(allocator: &'a Allocator) -> Self {
2663        Self {
2664            span: Dummy::dummy(allocator),
2665            type_parameters: Dummy::dummy(allocator),
2666            this_param: Dummy::dummy(allocator),
2667            params: Dummy::dummy(allocator),
2668            return_type: Dummy::dummy(allocator),
2669            scope_id: Dummy::dummy(allocator),
2670        }
2671    }
2672}
2673
2674impl<'a> Dummy<'a> for TSConstructorType<'a> {
2675    /// Create a dummy [`TSConstructorType`].
2676    ///
2677    /// Has cost of making 3 allocations (80 bytes).
2678    fn dummy(allocator: &'a Allocator) -> Self {
2679        Self {
2680            span: Dummy::dummy(allocator),
2681            r#abstract: Dummy::dummy(allocator),
2682            type_parameters: Dummy::dummy(allocator),
2683            params: Dummy::dummy(allocator),
2684            return_type: Dummy::dummy(allocator),
2685        }
2686    }
2687}
2688
2689impl<'a> Dummy<'a> for TSMappedType<'a> {
2690    /// Create a dummy [`TSMappedType`].
2691    ///
2692    /// Has cost of making 1 allocation (80 bytes).
2693    fn dummy(allocator: &'a Allocator) -> Self {
2694        Self {
2695            span: Dummy::dummy(allocator),
2696            type_parameter: Dummy::dummy(allocator),
2697            name_type: Dummy::dummy(allocator),
2698            type_annotation: Dummy::dummy(allocator),
2699            optional: Dummy::dummy(allocator),
2700            readonly: Dummy::dummy(allocator),
2701            scope_id: Dummy::dummy(allocator),
2702        }
2703    }
2704}
2705
2706impl<'a> Dummy<'a> for TSMappedTypeModifierOperator {
2707    /// Create a dummy [`TSMappedTypeModifierOperator`].
2708    ///
2709    /// Does not allocate any data into arena.
2710    #[inline(always)]
2711    fn dummy(allocator: &'a Allocator) -> Self {
2712        Self::True
2713    }
2714}
2715
2716impl<'a> Dummy<'a> for TSTemplateLiteralType<'a> {
2717    /// Create a dummy [`TSTemplateLiteralType`].
2718    ///
2719    /// Does not allocate any data into arena.
2720    fn dummy(allocator: &'a Allocator) -> Self {
2721        Self {
2722            span: Dummy::dummy(allocator),
2723            quasis: Dummy::dummy(allocator),
2724            types: Dummy::dummy(allocator),
2725        }
2726    }
2727}
2728
2729impl<'a> Dummy<'a> for TSAsExpression<'a> {
2730    /// Create a dummy [`TSAsExpression`].
2731    ///
2732    /// Has cost of making 2 allocations (16 bytes).
2733    fn dummy(allocator: &'a Allocator) -> Self {
2734        Self {
2735            span: Dummy::dummy(allocator),
2736            expression: Dummy::dummy(allocator),
2737            type_annotation: Dummy::dummy(allocator),
2738        }
2739    }
2740}
2741
2742impl<'a> Dummy<'a> for TSSatisfiesExpression<'a> {
2743    /// Create a dummy [`TSSatisfiesExpression`].
2744    ///
2745    /// Has cost of making 2 allocations (16 bytes).
2746    fn dummy(allocator: &'a Allocator) -> Self {
2747        Self {
2748            span: Dummy::dummy(allocator),
2749            expression: Dummy::dummy(allocator),
2750            type_annotation: Dummy::dummy(allocator),
2751        }
2752    }
2753}
2754
2755impl<'a> Dummy<'a> for TSTypeAssertion<'a> {
2756    /// Create a dummy [`TSTypeAssertion`].
2757    ///
2758    /// Has cost of making 2 allocations (16 bytes).
2759    fn dummy(allocator: &'a Allocator) -> Self {
2760        Self {
2761            span: Dummy::dummy(allocator),
2762            type_annotation: Dummy::dummy(allocator),
2763            expression: Dummy::dummy(allocator),
2764        }
2765    }
2766}
2767
2768impl<'a> Dummy<'a> for TSImportEqualsDeclaration<'a> {
2769    /// Create a dummy [`TSImportEqualsDeclaration`].
2770    ///
2771    /// Has cost of making 1 allocation (8 bytes).
2772    fn dummy(allocator: &'a Allocator) -> Self {
2773        Self {
2774            span: Dummy::dummy(allocator),
2775            id: Dummy::dummy(allocator),
2776            module_reference: Dummy::dummy(allocator),
2777            import_kind: Dummy::dummy(allocator),
2778        }
2779    }
2780}
2781
2782impl<'a> Dummy<'a> for TSModuleReference<'a> {
2783    /// Create a dummy [`TSModuleReference`].
2784    ///
2785    /// Has cost of making 1 allocation (8 bytes).
2786    fn dummy(allocator: &'a Allocator) -> Self {
2787        Self::ThisExpression(Dummy::dummy(allocator))
2788    }
2789}
2790
2791impl<'a> Dummy<'a> for TSExternalModuleReference<'a> {
2792    /// Create a dummy [`TSExternalModuleReference`].
2793    ///
2794    /// Does not allocate any data into arena.
2795    fn dummy(allocator: &'a Allocator) -> Self {
2796        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
2797    }
2798}
2799
2800impl<'a> Dummy<'a> for TSNonNullExpression<'a> {
2801    /// Create a dummy [`TSNonNullExpression`].
2802    ///
2803    /// Has cost of making 1 allocation (8 bytes).
2804    fn dummy(allocator: &'a Allocator) -> Self {
2805        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
2806    }
2807}
2808
2809impl<'a> Dummy<'a> for Decorator<'a> {
2810    /// Create a dummy [`Decorator`].
2811    ///
2812    /// Has cost of making 1 allocation (8 bytes).
2813    fn dummy(allocator: &'a Allocator) -> Self {
2814        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
2815    }
2816}
2817
2818impl<'a> Dummy<'a> for TSExportAssignment<'a> {
2819    /// Create a dummy [`TSExportAssignment`].
2820    ///
2821    /// Has cost of making 1 allocation (8 bytes).
2822    fn dummy(allocator: &'a Allocator) -> Self {
2823        Self { span: Dummy::dummy(allocator), expression: Dummy::dummy(allocator) }
2824    }
2825}
2826
2827impl<'a> Dummy<'a> for TSNamespaceExportDeclaration<'a> {
2828    /// Create a dummy [`TSNamespaceExportDeclaration`].
2829    ///
2830    /// Does not allocate any data into arena.
2831    fn dummy(allocator: &'a Allocator) -> Self {
2832        Self { span: Dummy::dummy(allocator), id: Dummy::dummy(allocator) }
2833    }
2834}
2835
2836impl<'a> Dummy<'a> for TSInstantiationExpression<'a> {
2837    /// Create a dummy [`TSInstantiationExpression`].
2838    ///
2839    /// Has cost of making 2 allocations (40 bytes).
2840    fn dummy(allocator: &'a Allocator) -> Self {
2841        Self {
2842            span: Dummy::dummy(allocator),
2843            expression: Dummy::dummy(allocator),
2844            type_arguments: Dummy::dummy(allocator),
2845        }
2846    }
2847}
2848
2849impl<'a> Dummy<'a> for ImportOrExportKind {
2850    /// Create a dummy [`ImportOrExportKind`].
2851    ///
2852    /// Does not allocate any data into arena.
2853    #[inline(always)]
2854    fn dummy(allocator: &'a Allocator) -> Self {
2855        Self::Value
2856    }
2857}
2858
2859impl<'a> Dummy<'a> for JSDocNullableType<'a> {
2860    /// Create a dummy [`JSDocNullableType`].
2861    ///
2862    /// Has cost of making 1 allocation (8 bytes).
2863    fn dummy(allocator: &'a Allocator) -> Self {
2864        Self {
2865            span: Dummy::dummy(allocator),
2866            type_annotation: Dummy::dummy(allocator),
2867            postfix: Dummy::dummy(allocator),
2868        }
2869    }
2870}
2871
2872impl<'a> Dummy<'a> for JSDocNonNullableType<'a> {
2873    /// Create a dummy [`JSDocNonNullableType`].
2874    ///
2875    /// Has cost of making 1 allocation (8 bytes).
2876    fn dummy(allocator: &'a Allocator) -> Self {
2877        Self {
2878            span: Dummy::dummy(allocator),
2879            type_annotation: Dummy::dummy(allocator),
2880            postfix: Dummy::dummy(allocator),
2881        }
2882    }
2883}
2884
2885impl<'a> Dummy<'a> for JSDocUnknownType {
2886    /// Create a dummy [`JSDocUnknownType`].
2887    ///
2888    /// Does not allocate any data into arena.
2889    fn dummy(allocator: &'a Allocator) -> Self {
2890        Self { span: Dummy::dummy(allocator) }
2891    }
2892}