oxc_ast/generated/
derive_content_eq.rs

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