oxc-css-parser 0.0.3

Parser for CSS, SCSS, Sass, and Less.
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
1673
1674
1675
1676
1677
1678
1679
1680
1681
1682
1683
1684
1685
1686
1687
1688
1689
1690
1691
1692
1693
1694
1695
1696
1697
1698
1699
1700
1701
1702
1703
1704
1705
1706
1707
1708
1709
1710
1711
1712
1713
1714
1715
1716
1717
1718
1719
1720
1721
1722
1723
1724
1725
1726
1727
1728
1729
1730
1731
1732
1733
1734
1735
1736
1737
1738
1739
1740
1741
1742
1743
1744
1745
1746
1747
1748
1749
1750
1751
1752
1753
1754
1755
1756
1757
1758
1759
1760
1761
1762
1763
1764
1765
1766
1767
1768
1769
1770
1771
1772
1773
1774
1775
1776
1777
1778
1779
1780
1781
1782
1783
1784
1785
1786
1787
1788
1789
1790
1791
1792
1793
1794
1795
1796
1797
1798
1799
1800
1801
1802
1803
1804
1805
1806
1807
1808
1809
1810
1811
1812
1813
1814
1815
1816
1817
1818
1819
1820
1821
1822
1823
1824
1825
1826
1827
1828
1829
1830
1831
1832
1833
1834
1835
1836
1837
1838
1839
1840
1841
1842
1843
1844
1845
1846
1847
1848
1849
1850
1851
1852
1853
1854
1855
1856
1857
1858
1859
1860
1861
1862
1863
1864
1865
1866
1867
1868
1869
1870
1871
1872
1873
1874
1875
1876
1877
1878
1879
1880
1881
1882
1883
1884
1885
1886
1887
1888
1889
1890
1891
1892
1893
1894
1895
1896
1897
1898
1899
1900
1901
1902
1903
1904
1905
1906
1907
1908
1909
1910
1911
1912
1913
1914
1915
1916
1917
1918
1919
1920
1921
1922
1923
1924
1925
1926
1927
1928
1929
1930
1931
1932
1933
1934
1935
1936
1937
1938
1939
1940
1941
1942
1943
1944
1945
1946
1947
// This file is generated by removing the old proc-macro derives. Keep the lists in sync with the AST/token definitions.
macro_rules! impl_spanned_struct {
    ($name:ident $(<$lifetime:lifetime>)?) => {
        impl$(<$lifetime>)? crate::pos::Spanned for $name$(<$lifetime>)? {
            #[inline]
            fn span(&self) -> &Span {
                &self.span
            }
        }
    };
}

macro_rules! impl_spanned_enum {
    ($name:ident $(<$lifetime:lifetime>)? { tuple: [$($tuple:ident,)*], unit: [$($unit:ident,)*], }) => {
        impl$(<$lifetime>)? crate::pos::Spanned for $name$(<$lifetime>)? {
            #[inline]
            fn span(&self) -> &Span {
                match self {
                    $(Self::$tuple(value) => value.span(),)*
                    $(Self::$unit => panic!("not implemented"),)*
                }
            }
        }
    };
}

#[cfg(feature = "span_ignored_eq")]
macro_rules! impl_span_ignored_eq_struct {
    ($name:ident $(<$lifetime:lifetime>)? {}) => {
        impl$(<$lifetime>)? crate::SpanIgnoredEq for $name$(<$lifetime>)? {
            #[inline]
            fn span_ignored_eq(&self, _other: &Self) -> bool {
                true
            }
        }
    };
    ($name:ident $(<$lifetime:lifetime>)? { $first:ident $(, $field:ident)* $(,)? }) => {
        impl$(<$lifetime>)? crate::SpanIgnoredEq for $name$(<$lifetime>)? {
            #[inline]
            fn span_ignored_eq(&self, other: &Self) -> bool {
                crate::SpanIgnoredEq::span_ignored_eq(&self.$first, &other.$first)
                    $(&& crate::SpanIgnoredEq::span_ignored_eq(&self.$field, &other.$field))*
            }
        }
    };
}

#[cfg(feature = "span_ignored_eq")]
macro_rules! impl_span_ignored_eq_enum {
    ($name:ident $(<$lifetime:lifetime>)? { tuple: [$($tuple:ident,)*], unit: [$($unit:ident,)*], }) => {
        impl$(<$lifetime>)? crate::SpanIgnoredEq for $name$(<$lifetime>)? {
            #[inline]
            fn span_ignored_eq(&self, other: &Self) -> bool {
                match (self, other) {
                    $((Self::$tuple(left), Self::$tuple(right)) => crate::SpanIgnoredEq::span_ignored_eq(left, right),)*
                    $((Self::$unit, Self::$unit) => true,)*
                    _ => false,
                }
            }
        }
    };
}

#[cfg(feature = "variant_helpers")]
macro_rules! impl_enum_as_is {
    ($name:ident $(<$lifetime:lifetime>)? { tuple: [$($tuple:ident($tuple_ty:ty) => $is_tuple:ident, $as_tuple:ident,)*], unit: [$($unit:ident => $is_unit:ident,)*], }) => {
        impl$(<$lifetime>)? $name$(<$lifetime>)? {
            $(
                #[doc = concat!("Checks whether this is [`", stringify!($tuple), "`](Self::", stringify!($tuple), ").")]
                #[inline]
                pub fn $is_tuple(&self) -> bool {
                    matches!(self, Self::$tuple(..))
                }

                #[doc = concat!("Returns [`Some`] with a reference to [`", stringify!($tuple), "`](Self::", stringify!($tuple), "), otherwise [`None`].")]
                #[inline]
                pub fn $as_tuple(&self) -> Option<&$tuple_ty> {
                    match self {
                        Self::$tuple(value) => Some(value),
                        _ => None,
                    }
                }
            )*
            $(
                #[doc = concat!("Checks whether this is [`", stringify!($unit), "`](Self::", stringify!($unit), ").")]
                #[inline]
                pub fn $is_unit(&self) -> bool {
                    matches!(self, Self::$unit)
                }
            )*
        }
    };
}

// Spanned
impl_spanned_struct!(AnPlusB);
impl_spanned_struct!(AtRule<'a>);
impl_spanned_enum!(AtRulePrelude<'a> {
    tuple: [Charset, ColorProfile, Container, CounterStyle, CustomMedia, CustomSelector, Document, FontFeatureValues, FontPaletteValues, Import, Keyframes, Layer, LessImport, LessPlugin, Media, Namespace, Nest, Page, PositionTry, Property, SassAtRoot, SassContent, SassEach, SassExpr, SassExtend, SassFor, SassForward, SassFunction, SassImport, SassInclude, SassMixin, SassUse, Scope, ScrollTimeline, Supports, Unknown, ],
    unit: [],
});
impl_spanned_struct!(AttributeSelector<'a>);
impl_spanned_struct!(AttributeSelectorMatcher);
impl_spanned_struct!(AttributeSelectorModifier<'a>);
impl_spanned_enum!(AttributeSelectorValue<'a> {
    tuple: [Ident, Str, Number, Dimension, Percentage, LessEscapedStr, ],
    unit: [],
});
impl_spanned_struct!(BracketBlock<'a>);
impl_spanned_struct!(Calc<'a>);
impl_spanned_struct!(CalcOperator);
impl_spanned_enum!(CalcOperatorKind {
    tuple: [],
    unit: [Plus, Minus, Multiply, Division, ],
});
impl_spanned_struct!(ClassSelector<'a>);
impl_spanned_enum!(ColorProfilePrelude<'a> {
    tuple: [DashedIdent, DeviceCmyk, ],
    unit: [],
});
impl_spanned_struct!(Combinator);
impl_spanned_struct!(ComplexSelector<'a>);
impl_spanned_enum!(ComplexSelectorChild<'a> {
    tuple: [CompoundSelector, Combinator, ],
    unit: [],
});
impl_spanned_enum!(ComponentValue<'a> {
    tuple: [BracketBlock, Calc, Delimiter, Dimension, Function, HexColor, IdSelector, ImportantAnnotation, InterpolableIdent, InterpolableStr, LayerName, LessBinaryOperation, LessCondition, LessDetachedRuleset, LessEscapedStr, LessJavaScriptSnippet, LessList, LessMixinCall, LessNamespaceValue, LessNegativeValue, LessParenthesizedOperation, LessPercentKeyword, LessPropertyVariable, LessVariable, LessVariableVariable, Number, Percentage, Placeholder, PostcssSimpleVar, Ratio, SassArbitraryArgument, SassBinaryExpression, SassKeywordArgument, SassList, SassMap, SassQualifiedName, SassNestingDeclaration, SassParenthesizedExpression, SassParentSelector, SassUnaryExpression, SassVariable, TokenWithSpan, UnicodeRange, Url, ],
    unit: [],
});
impl_spanned_struct!(ComponentValues<'a>);
impl_spanned_struct!(CompoundSelector<'a>);
impl_spanned_struct!(CompoundSelectorList<'a>);
impl_spanned_struct!(ContainerCondition<'a>);
impl_spanned_enum!(ContainerConditionKind<'a> {
    tuple: [QueryInParens, And, Or, Not, ],
    unit: [],
});
impl_spanned_struct!(ContainerConditionAnd<'a>);
impl_spanned_struct!(ContainerConditionNot<'a>);
impl_spanned_struct!(ContainerConditionOr<'a>);
impl_spanned_struct!(ContainerPrelude<'a>);
impl_spanned_struct!(CustomMedia<'a>);
impl_spanned_enum!(CustomMediaValue<'a> {
    tuple: [MediaQueryList, True, False, ],
    unit: [],
});
impl_spanned_struct!(CustomSelector<'a>);
impl_spanned_struct!(CustomSelectorArg<'a>);
impl_spanned_struct!(CustomSelectorArgs<'a>);
impl_spanned_struct!(CustomSelectorPrelude<'a>);
impl_spanned_struct!(Declaration<'a>);
impl_spanned_struct!(Delimiter);
impl_spanned_struct!(Dimension<'a>);
impl_spanned_enum!(DimensionKind {
    tuple: [],
    unit: [Length, Angle, Duration, Frequency, Resolution, Flex, Unknown, ],
});
impl_spanned_struct!(DocumentPrelude<'a>);
impl_spanned_enum!(DocumentPreludeMatcher<'a> {
    tuple: [Url, Function, ],
    unit: [],
});
impl_spanned_enum!(FontFamilyName<'a> {
    tuple: [Str, Unquoted, ],
    unit: [],
});
impl_spanned_struct!(Function<'a>);
impl_spanned_enum!(FunctionName<'a> {
    tuple: [Ident, SassQualifiedName, LessListFunction, LessFormatFunction, ],
    unit: [],
});
impl_spanned_struct!(HexColor<'a>);
impl_spanned_struct!(Ident<'a>);
impl_spanned_struct!(ImportPrelude<'a>);
impl_spanned_enum!(ImportPreludeHref<'a> {
    tuple: [Str, Url, Function, ],
    unit: [],
});
impl_spanned_enum!(ImportPreludeLayer<'a> {
    tuple: [Empty, WithName, ],
    unit: [],
});
impl_spanned_struct!(ImportPreludeSupports<'a>);
impl_spanned_enum!(ImportPreludeSupportsKind<'a> {
    tuple: [SupportsCondition, Declaration, ],
    unit: [],
});
impl_spanned_enum!(InterpolableIdent<'a> {
    tuple: [Literal, SassInterpolated, LessInterpolated, Placeholder, ],
    unit: [],
});
impl_spanned_struct!(Placeholder<'a>);
impl_spanned_struct!(InterpolableIdentStaticPart<'a>);
impl_spanned_enum!(InterpolableStr<'a> {
    tuple: [Literal, SassInterpolated, LessInterpolated, ],
    unit: [],
});
impl_spanned_struct!(InterpolableStrStaticPart<'a>);
impl_spanned_struct!(InterpolableUrlStaticPart<'a>);
impl_spanned_struct!(IdSelector<'a>);
impl_spanned_struct!(ImportantAnnotation<'a>);
impl_spanned_struct!(KeyframeBlock<'a>);
impl_spanned_enum!(KeyframeSelector<'a> {
    tuple: [Ident, Percentage, ],
    unit: [],
});
impl_spanned_enum!(KeyframesName<'a> {
    tuple: [Ident, Str, LessVariable, LessEscapedStr, ],
    unit: [],
});
impl_spanned_enum!(LanguageRange<'a> {
    tuple: [Str, Ident, ],
    unit: [],
});
impl_spanned_struct!(LanguageRangeList<'a>);
impl_spanned_struct!(LayerName<'a>);
impl_spanned_struct!(LayerNames<'a>);
impl_spanned_struct!(LessBinaryCondition<'a>);
impl_spanned_struct!(LessBinaryConditionOperator);
impl_spanned_struct!(LessBinaryOperation<'a>);
impl_spanned_enum!(LessCondition<'a> {
    tuple: [Binary, Negated, Parenthesized, Value, ],
    unit: [],
});
impl_spanned_struct!(LessConditionalQualifiedRule<'a>);
impl_spanned_struct!(LessConditions<'a>);
impl_spanned_struct!(LessDetachedRuleset<'a>);
impl_spanned_struct!(LessEscapedStr<'a>);
impl_spanned_struct!(LessExtend<'a>);
impl_spanned_struct!(LessExtendList<'a>);
impl_spanned_struct!(LessExtendRule<'a>);
impl_spanned_struct!(LessFormatFunction);
impl_spanned_struct!(LessImportOptions<'a>);
impl_spanned_struct!(LessImportPrelude<'a>);
impl_spanned_struct!(LessInterpolatedIdent<'a>);
impl_spanned_enum!(LessInterpolatedIdentElement<'a> {
    tuple: [Variable, Property, Static, ],
    unit: [],
});
impl_spanned_struct!(LessInterpolatedStr<'a>);
impl_spanned_enum!(LessInterpolatedStrElement<'a> {
    tuple: [Variable, Property, Static, ],
    unit: [],
});
impl_spanned_struct!(LessJavaScriptSnippet<'a>);
impl_spanned_struct!(LessList<'a>);
impl_spanned_struct!(LessListFunction);
impl_spanned_struct!(LessLookup<'a>);
impl_spanned_enum!(LessLookupName<'a> {
    tuple: [LessVariable, LessVariableVariable, LessPropertyVariable, Ident, ],
    unit: [],
});
impl_spanned_struct!(LessLookups<'a>);
impl_spanned_enum!(LessMixinArgument<'a> {
    tuple: [Named, Value, Variadic, ],
    unit: [],
});
impl_spanned_struct!(LessMixinArguments<'a>);
impl_spanned_struct!(LessMixinCall<'a>);
impl_spanned_struct!(LessMixinCallee<'a>);
impl_spanned_struct!(LessMixinCalleeChild<'a>);
impl_spanned_struct!(LessMixinDefinition<'a>);
impl_spanned_enum!(LessMixinName<'a> {
    tuple: [ClassSelector, IdSelector, ],
    unit: [],
});
impl_spanned_struct!(LessMixinNamedArgument<'a>);
impl_spanned_struct!(LessMixinNamedParameter<'a>);
impl_spanned_struct!(LessMixinNamedParameterDefaultValue<'a>);
impl_spanned_enum!(LessMixinParameter<'a> {
    tuple: [Named, Unnamed, Variadic, ],
    unit: [],
});
impl_spanned_struct!(LessMixinParameters<'a>);
impl_spanned_enum!(LessMixinParameterName<'a> {
    tuple: [Variable, PropertyVariable, ],
    unit: [],
});
impl_spanned_struct!(LessMixinUnnamedParameter<'a>);
impl_spanned_struct!(LessMixinVariadicArgument<'a>);
impl_spanned_struct!(LessMixinVariadicParameter<'a>);
impl_spanned_struct!(LessNamespaceValue<'a>);
impl_spanned_enum!(LessNamespaceValueCallee<'a> {
    tuple: [LessMixinCall, LessVariable, ],
    unit: [],
});
impl_spanned_struct!(LessNegatedCondition<'a>);
impl_spanned_struct!(LessNegativeValue<'a>);
impl_spanned_struct!(LessOperationOperator);
impl_spanned_struct!(LessParenthesizedCondition<'a>);
impl_spanned_struct!(LessParenthesizedOperation<'a>);
impl_spanned_struct!(LessPercentKeyword);
impl_spanned_struct!(LessPlugin<'a>);
impl_spanned_enum!(LessPluginPath<'a> {
    tuple: [Str, Url, ],
    unit: [],
});
impl_spanned_struct!(LessPropertyInterpolation<'a>);
impl_spanned_struct!(LessPropertyMerge);
impl_spanned_enum!(LessPropertyMergeKind {
    tuple: [],
    unit: [Comma, Space, ],
});
impl_spanned_struct!(LessPropertyVariable<'a>);
impl_spanned_struct!(LessVariable<'a>);
impl_spanned_struct!(LessVariableCall<'a>);
impl_spanned_struct!(LessVariableDeclaration<'a>);
impl_spanned_struct!(LessVariableInterpolation<'a>);
impl_spanned_struct!(LessVariableVariable<'a>);
impl_spanned_struct!(MediaAnd<'a>);
impl_spanned_struct!(MediaCondition<'a>);
impl_spanned_struct!(MediaConditionAfterMediaType<'a>);
impl_spanned_enum!(MediaConditionKind<'a> {
    tuple: [MediaInParens, And, Or, Not, ],
    unit: [],
});
impl_spanned_enum!(MediaFeature<'a> {
    tuple: [Plain, Boolean, Range, RangeInterval, ],
    unit: [],
});
impl_spanned_struct!(MediaFeatureComparison);
impl_spanned_enum!(MediaFeatureName<'a> {
    tuple: [Ident, PostcssSimpleVar, SassVariable, ],
    unit: [],
});
impl_spanned_struct!(MediaFeatureBoolean<'a>);
impl_spanned_struct!(MediaFeaturePlain<'a>);
impl_spanned_struct!(MediaFeatureRange<'a>);
impl_spanned_struct!(MediaFeatureRangeInterval<'a>);
impl_spanned_struct!(MediaInParens<'a>);
impl_spanned_enum!(MediaInParensKind<'a> {
    tuple: [MediaCondition, MediaFeature, GeneralEnclosed, SassInterpolation, ],
    unit: [],
});
impl_spanned_struct!(MediaNot<'a>);
impl_spanned_struct!(MediaOr<'a>);
impl_spanned_enum!(MediaQuery<'a> {
    tuple: [ConditionOnly, WithType, Function, LessVariable, LessNamespaceValue, ],
    unit: [],
});
impl_spanned_struct!(MediaQueryList<'a>);
impl_spanned_struct!(MediaQueryWithType<'a>);
impl_spanned_struct!(NamespacePrelude<'a>);
impl_spanned_enum!(NamespacePreludeUri<'a> {
    tuple: [Str, Url, ],
    unit: [],
});
impl_spanned_struct!(NestingSelector<'a>);
impl_spanned_struct!(NsPrefix<'a>);
impl_spanned_enum!(NsPrefixKind<'a> {
    tuple: [Ident, Universal, ],
    unit: [],
});
impl_spanned_struct!(NsPrefixUniversal);
impl_spanned_struct!(Nth<'a>);
impl_spanned_enum!(NthIndex<'a> {
    tuple: [Odd, Even, Integer, AnPlusB, ],
    unit: [],
});
impl_spanned_struct!(NthMatcher<'a>);
impl_spanned_struct!(Number<'a>);
impl_spanned_struct!(PageSelector<'a>);
impl_spanned_struct!(PageSelectorList<'a>);
impl_spanned_struct!(Percentage<'a>);
impl_spanned_struct!(PostcssSimpleVar<'a>);
impl_spanned_struct!(PostcssSimpleVarDeclaration<'a>);
impl_spanned_struct!(PseudoClassSelector<'a>);
impl_spanned_struct!(PseudoClassSelectorArg<'a>);
impl_spanned_enum!(PseudoClassSelectorArgKind<'a> {
    tuple: [CompoundSelector, CompoundSelectorList, Ident, LanguageRangeList, Nth, Number, RelativeSelectorList, SelectorList, LessExtendList, TokenSeq, ],
    unit: [],
});
impl_spanned_struct!(PseudoElementSelector<'a>);
impl_spanned_struct!(PseudoElementSelectorArg<'a>);
impl_spanned_enum!(PseudoElementSelectorArgKind<'a> {
    tuple: [CompoundSelector, Ident, TokenSeq, ],
    unit: [],
});
impl_spanned_struct!(PseudoPage<'a>);
impl_spanned_struct!(QualifiedRule<'a>);
impl_spanned_struct!(QueryInParens<'a>);
impl_spanned_enum!(QueryInParensKind<'a> {
    tuple: [ContainerCondition, SizeFeature, StyleQuery, ScrollState, ],
    unit: [],
});
impl_spanned_struct!(Ratio<'a>);
impl_spanned_struct!(RelativeSelector<'a>);
impl_spanned_struct!(RelativeSelectorList<'a>);
impl_spanned_struct!(SassArbitraryArgument<'a>);
impl_spanned_struct!(SassArbitraryParameter<'a>);
impl_spanned_struct!(SassAtRoot<'a>);
impl_spanned_enum!(SassAtRootKind<'a> {
    tuple: [Selector, Query, ],
    unit: [],
});
impl_spanned_struct!(SassAtRootQuery<'a>);
impl_spanned_struct!(SassAtRootQueryModifier);
impl_spanned_enum!(SassAtRootQueryRule<'a> {
    tuple: [Ident, Str, ],
    unit: [],
});
impl_spanned_struct!(SassBinaryExpression<'a>);
impl_spanned_struct!(SassBinaryOperator);
impl_spanned_struct!(SassConditionalClause<'a>);
impl_spanned_struct!(SassContent<'a>);
impl_spanned_struct!(SassEach<'a>);
impl_spanned_struct!(SassExtend<'a>);
impl_spanned_struct!(SassFlag<'a>);
impl_spanned_struct!(SassFor<'a>);
impl_spanned_struct!(SassForBoundary);
impl_spanned_enum!(SassForBoundaryKind {
    tuple: [],
    unit: [Inclusive, Exclusive, ],
});
impl_spanned_struct!(SassForward<'a>);
impl_spanned_enum!(SassForwardMember<'a> {
    tuple: [Ident, Variable, ],
    unit: [],
});
impl_spanned_struct!(SassForwardPrefix<'a>);
impl_spanned_struct!(SassForwardVisibility<'a>);
impl_spanned_struct!(SassForwardVisibilityModifier);
impl_spanned_enum!(SassForwardVisibilityModifierKind {
    tuple: [],
    unit: [Hide, Show, ],
});
impl_spanned_struct!(SassFunction<'a>);
impl_spanned_struct!(SassIfAtRule<'a>);
impl_spanned_struct!(SassImportPrelude<'a>);
impl_spanned_struct!(SassInclude<'a>);
impl_spanned_struct!(SassIncludeArgs<'a>);
impl_spanned_struct!(SassIncludeContentBlockParams<'a>);
impl_spanned_struct!(SassInterpolatedIdent<'a>);
impl_spanned_enum!(SassInterpolatedIdentElement<'a> {
    tuple: [Expression, Static, ],
    unit: [],
});
impl_spanned_struct!(SassInterpolatedStr<'a>);
impl_spanned_enum!(SassInterpolatedStrElement<'a> {
    tuple: [Expression, Static, ],
    unit: [],
});
impl_spanned_struct!(SassInterpolatedUrl<'a>);
impl_spanned_enum!(SassInterpolatedUrlElement<'a> {
    tuple: [Expression, Static, ],
    unit: [],
});
impl_spanned_struct!(SassKeywordArgument<'a>);
impl_spanned_struct!(SassList<'a>);
impl_spanned_struct!(SassMap<'a>);
impl_spanned_struct!(SassMapItem<'a>);
impl_spanned_struct!(SassMixin<'a>);
impl_spanned_struct!(SassModuleConfig<'a>);
impl_spanned_struct!(SassModuleConfigItem<'a>);
impl_spanned_enum!(SassModuleMemberName<'a> {
    tuple: [Ident, Variable, ],
    unit: [],
});
impl_spanned_struct!(SassNestingDeclaration<'a>);
impl_spanned_struct!(SassParameter<'a>);
impl_spanned_struct!(SassParameterDefaultValue<'a>);
impl_spanned_struct!(SassParameters<'a>);
impl_spanned_struct!(SassParenthesizedExpression<'a>);
impl_spanned_struct!(SassPlaceholderSelector<'a>);
impl_spanned_struct!(SassQualifiedName<'a>);
impl_spanned_struct!(SassUnaryExpression<'a>);
impl_spanned_struct!(SassUnaryOperator);
impl_spanned_struct!(SassUnnamedNamespace);
impl_spanned_struct!(SassUse<'a>);
impl_spanned_struct!(SassUseNamespace<'a>);
impl_spanned_enum!(SassUseNamespaceKind<'a> {
    tuple: [Named, Unnamed, ],
    unit: [],
});
impl_spanned_struct!(SassVariable<'a>);
impl_spanned_struct!(SassVariableDeclaration<'a>);
impl_spanned_struct!(ScopeEnd<'a>);
impl_spanned_enum!(ScopePrelude<'a> {
    tuple: [StartOnly, EndOnly, Both, ],
    unit: [],
});
impl_spanned_struct!(ScopeStart<'a>);
impl_spanned_struct!(ScopeStartWithEnd<'a>);
impl_spanned_struct!(SelectorList<'a>);
impl_spanned_struct!(SimpleBlock<'a>);
impl_spanned_enum!(SimpleSelector<'a> {
    tuple: [Class, Id, Type, Attribute, PseudoClass, PseudoElement, Nesting, SassPlaceholder, ],
    unit: [],
});
impl_spanned_enum!(Statement<'a> {
    tuple: [AtRule, Declaration, KeyframeBlock, LessConditionalQualifiedRule, LessExtendRule, LessFunctionCall, LessMixinCall, LessMixinDefinition, LessVariableCall, LessVariableDeclaration, Placeholder, PostcssSimpleVarDeclaration, QualifiedRule, SassIfAtRule, SassVariableDeclaration, UnknownSassAtRule, ],
    unit: [],
});
impl_spanned_struct!(Str<'a>);
impl_spanned_struct!(StyleCondition<'a>);
impl_spanned_enum!(StyleConditionKind<'a> {
    tuple: [StyleInParens, And, Or, Not, ],
    unit: [],
});
impl_spanned_struct!(StyleConditionAnd<'a>);
impl_spanned_struct!(StyleConditionNot<'a>);
impl_spanned_struct!(StyleConditionOr<'a>);
impl_spanned_struct!(StyleInParens<'a>);
impl_spanned_enum!(StyleInParensKind<'a> {
    tuple: [Condition, Feature, ],
    unit: [],
});
impl_spanned_enum!(StyleQuery<'a> {
    tuple: [Condition, Feature, ],
    unit: [],
});
impl_spanned_struct!(Stylesheet<'a>);
impl_spanned_struct!(SupportsAnd<'a>);
impl_spanned_struct!(SupportsCondition<'a>);
impl_spanned_enum!(SupportsConditionKind<'a> {
    tuple: [Not, And, Or, SupportsInParens, ],
    unit: [],
});
impl_spanned_struct!(SupportsDecl<'a>);
impl_spanned_struct!(SupportsInParens<'a>);
impl_spanned_enum!(SupportsInParensKind<'a> {
    tuple: [SupportsCondition, Feature, Selector, Function, GeneralEnclosed, ],
    unit: [],
});
impl_spanned_struct!(SupportsNot<'a>);
impl_spanned_struct!(SupportsOr<'a>);
impl_spanned_struct!(TagNameSelector<'a>);
impl_spanned_struct!(TokenSeq<'a>);
impl_spanned_enum!(TypeSelector<'a> {
    tuple: [TagName, Universal, ],
    unit: [],
});
impl_spanned_struct!(UnicodeRange<'a>);
impl_spanned_struct!(UniversalSelector<'a>);
impl_spanned_enum!(UnknownAtRulePrelude<'a> {
    tuple: [ComponentValue, TokenSeq, ],
    unit: [],
});
impl_spanned_struct!(UnknownSassAtRule<'a>);
impl_spanned_struct!(UnquotedFontFamilyName<'a>);
impl_spanned_struct!(Url<'a>);
impl_spanned_enum!(UrlModifier<'a> {
    tuple: [Ident, Function, ],
    unit: [],
});
impl_spanned_struct!(UrlRaw<'a>);
impl_spanned_enum!(UrlValue<'a> {
    tuple: [Raw, SassInterpolated, Str, LessEscapedStr, ],
    unit: [],
});
impl_spanned_struct!(WqName<'a>);

// SpanIgnoredEq
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(AnPlusB { a, b, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(AtRule<'a> { name, prelude, block, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(AtRulePrelude<'a> {
    tuple: [Charset, ColorProfile, Container, CounterStyle, CustomMedia, CustomSelector, Document, FontFeatureValues, FontPaletteValues, Import, Keyframes, Layer, LessImport, LessPlugin, Media, Namespace, Nest, Page, PositionTry, Property, SassAtRoot, SassContent, SassEach, SassExpr, SassExtend, SassFor, SassForward, SassFunction, SassImport, SassInclude, SassMixin, SassUse, Scope, ScrollTimeline, Supports, Unknown, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(AttributeSelector<'a> { name, matcher, value, modifier, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(AttributeSelectorMatcher { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(AttributeSelectorMatcherKind {
    tuple: [],
    unit: [Exact, MatchWord, ExactOrPrefixThenHyphen, Prefix, Suffix, Substring, ],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(AttributeSelectorModifier<'a> { ident, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(AttributeSelectorValue<'a> {
    tuple: [Ident, Str, Number, Dimension, Percentage, LessEscapedStr, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(BracketBlock<'a> { value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(Calc<'a> { left, op, right, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(CalcOperator { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(CalcOperatorKind {
    tuple: [],
    unit: [Plus, Minus, Multiply, Division, ],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(ClassSelector<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(ColorProfilePrelude<'a> {
    tuple: [DashedIdent, DeviceCmyk, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(Combinator { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(CombinatorKind {
    tuple: [],
    unit: [Descendant, NextSibling, Child, LaterSibling, Column, ],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(ComplexSelector<'a> { children, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(ComplexSelectorChild<'a> {
    tuple: [CompoundSelector, Combinator, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(ComponentValue<'a> {
    tuple: [BracketBlock, Calc, Delimiter, Dimension, Function, HexColor, IdSelector, ImportantAnnotation, InterpolableIdent, InterpolableStr, LayerName, LessBinaryOperation, LessCondition, LessDetachedRuleset, LessEscapedStr, LessJavaScriptSnippet, LessList, LessMixinCall, LessNamespaceValue, LessNegativeValue, LessParenthesizedOperation, LessPercentKeyword, LessPropertyVariable, LessVariable, LessVariableVariable, Number, Percentage, Placeholder, PostcssSimpleVar, Ratio, SassArbitraryArgument, SassBinaryExpression, SassKeywordArgument, SassList, SassMap, SassQualifiedName, SassNestingDeclaration, SassParenthesizedExpression, SassParentSelector, SassUnaryExpression, SassVariable, TokenWithSpan, UnicodeRange, Url, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(ComponentValues<'a> { values, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(CompoundSelector<'a> { children, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(CompoundSelectorList<'a> { selectors, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(ContainerCondition<'a> { conditions, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(ContainerConditionKind<'a> {
    tuple: [QueryInParens, And, Or, Not, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(ContainerConditionAnd<'a> { keyword, query_in_parens, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(ContainerConditionNot<'a> { keyword, query_in_parens, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(ContainerConditionOr<'a> { keyword, query_in_parens, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(ContainerPrelude<'a> { name, condition, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(CustomMedia<'a> { name, value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(CustomMediaValue<'a> {
    tuple: [MediaQueryList, True, False, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(CustomSelector<'a> { prefix_arg, name, args, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(CustomSelectorArg<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(CustomSelectorArgs<'a> { args, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(CustomSelectorPrelude<'a> { custom_selector, selector, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(Declaration<'a> { name, name_suffix, colon_span, value, important, less_property_merge, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(Delimiter { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(DelimiterKind {
    tuple: [],
    unit: [Comma, Solidus, Semicolon, ],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(Dimension<'a> { value, unit, kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(DimensionKind {
    tuple: [],
    unit: [Length, Angle, Duration, Frequency, Resolution, Flex, Unknown, ],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(DocumentPrelude<'a> { matchers, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(DocumentPreludeMatcher<'a> {
    tuple: [Url, Function, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(FontFamilyName<'a> {
    tuple: [Str, Unquoted, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(Function<'a> { name, args, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(FunctionName<'a> {
    tuple: [Ident, SassQualifiedName, LessListFunction, LessFormatFunction, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(HexColor<'a> { value, raw, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(Ident<'a> { name, raw, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(ImportPrelude<'a> { href, layer, supports, media, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(ImportPreludeHref<'a> {
    tuple: [Str, Url, Function, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(ImportPreludeLayer<'a> {
    tuple: [Empty, WithName, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(ImportPreludeSupports<'a> { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(ImportPreludeSupportsKind<'a> {
    tuple: [SupportsCondition, Declaration, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(InterpolableIdent<'a> {
    tuple: [Literal, SassInterpolated, LessInterpolated, Placeholder, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(Placeholder<'a> { index, suffix, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(InterpolableIdentStaticPart<'a> { value, raw, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(InterpolableStr<'a> {
    tuple: [Literal, SassInterpolated, LessInterpolated, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(InterpolableStrStaticPart<'a> { value, raw, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(InterpolableUrlStaticPart<'a> { value, raw, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(IdSelector<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(ImportantAnnotation<'a> { ident, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(KeyframeBlock<'a> { selectors, comma_spans, block, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(KeyframeSelector<'a> {
    tuple: [Ident, Percentage, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(KeyframesName<'a> {
    tuple: [Ident, Str, LessVariable, LessEscapedStr, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(LanguageRange<'a> {
    tuple: [Str, Ident, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LanguageRangeList<'a> { ranges, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LayerName<'a> { idents, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LayerNames<'a> { names, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessBinaryCondition<'a> { left, op, right, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessBinaryConditionOperator { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(LessBinaryConditionOperatorKind {
    tuple: [],
    unit: [GreaterThan, GreaterThanOrEqual, LessThan, LessThanOrEqual, Equal, EqualOrGreaterThan, EqualOrLessThan, And, Or, ],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessBinaryOperation<'a> { left, op, right, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(LessCondition<'a> {
    tuple: [Binary, Negated, Parenthesized, Value, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessConditionalQualifiedRule<'a> { selector, guard, block, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessConditions<'a> { conditions, when_span, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessDetachedRuleset<'a> { block, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessEscapedStr<'a> { str, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessExtend<'a> { selector, all, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessExtendList<'a> { elements, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessExtendRule<'a> { nesting_selector, name_of_extend, extend, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessFormatFunction {});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessImportOptions<'a> { names, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessImportPrelude<'a> { href, options, media, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessInterpolatedIdent<'a> { elements, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(LessInterpolatedIdentElement<'a> {
    tuple: [Variable, Property, Static, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessInterpolatedStr<'a> { elements, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(LessInterpolatedStrElement<'a> {
    tuple: [Variable, Property, Static, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessJavaScriptSnippet<'a> { code, raw, escaped, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessList<'a> { elements, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessListFunction {});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessLookup<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(LessLookupName<'a> {
    tuple: [LessVariable, LessVariableVariable, LessPropertyVariable, Ident, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessLookups<'a> { lookups, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(LessMixinArgument<'a> {
    tuple: [Named, Value, Variadic, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessMixinArguments<'a> { args, is_comma_separated, separator_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessMixinCall<'a> { callee, args, important, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessMixinCallee<'a> { children, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessMixinCalleeChild<'a> { name, combinator, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessMixinDefinition<'a> { name, params, guard, block, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(LessMixinName<'a> {
    tuple: [ClassSelector, IdSelector, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessMixinNamedArgument<'a> { name, colon_span, value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessMixinNamedParameter<'a> { name, value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessMixinNamedParameterDefaultValue<'a> { colon_span, value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(LessMixinParameter<'a> {
    tuple: [Named, Unnamed, Variadic, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessMixinParameters<'a> { params, is_comma_separated, separator_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(LessMixinParameterName<'a> {
    tuple: [Variable, PropertyVariable, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessMixinUnnamedParameter<'a> { value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessMixinVariadicArgument<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessMixinVariadicParameter<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessNamespaceValue<'a> { callee, lookups, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(LessNamespaceValueCallee<'a> {
    tuple: [LessMixinCall, LessVariable, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessNegatedCondition<'a> { condition, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessNegativeValue<'a> { value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessOperationOperator { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(LessOperationOperatorKind {
    tuple: [],
    unit: [Multiply, Division, Plus, Minus, ],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessParenthesizedCondition<'a> { condition, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessParenthesizedOperation<'a> { operation, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessPercentKeyword {});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessPlugin<'a> { path, args, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(LessPluginPath<'a> {
    tuple: [Str, Url, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessPropertyInterpolation<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessPropertyMerge { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(LessPropertyMergeKind {
    tuple: [],
    unit: [Comma, Space, ],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessPropertyVariable<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessVariable<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessVariableCall<'a> { variable, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessVariableDeclaration<'a> { name, colon_span, value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessVariableInterpolation<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(LessVariableVariable<'a> { variable, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(MediaAnd<'a> { keyword, media_in_parens, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(MediaCondition<'a> { conditions, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(MediaConditionAfterMediaType<'a> { and, condition, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(MediaConditionKind<'a> {
    tuple: [MediaInParens, And, Or, Not, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(MediaFeature<'a> {
    tuple: [Plain, Boolean, Range, RangeInterval, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(MediaFeatureComparison { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(MediaFeatureComparisonKind {
    tuple: [],
    unit: [LessThan, LessThanOrEqual, GreaterThan, GreaterThanOrEqual, Equal, ],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(MediaFeatureName<'a> {
    tuple: [Ident, PostcssSimpleVar, SassVariable, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(MediaFeatureBoolean<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(MediaFeaturePlain<'a> { name, colon_span, value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(MediaFeatureRange<'a> { left, comparison, right, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(MediaFeatureRangeInterval<'a> { left, left_comparison, name, right_comparison, right, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(MediaInParens<'a> { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(MediaInParensKind<'a> {
    tuple: [MediaCondition, MediaFeature, GeneralEnclosed, SassInterpolation, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(MediaNot<'a> { keyword, media_in_parens, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(MediaOr<'a> { keyword, media_in_parens, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(MediaQuery<'a> {
    tuple: [ConditionOnly, WithType, Function, LessVariable, LessNamespaceValue, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(MediaQueryList<'a> { queries, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(MediaQueryWithType<'a> { modifier, media_type, condition, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(NamespacePrelude<'a> { prefix, uri, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(NamespacePreludeUri<'a> {
    tuple: [Str, Url, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(NestingSelector<'a> { suffix, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(NsPrefix<'a> { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(NsPrefixKind<'a> {
    tuple: [Ident, Universal, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(NsPrefixUniversal {});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(Nth<'a> { index, matcher, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(NthIndex<'a> {
    tuple: [Odd, Even, Integer, AnPlusB, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(NthMatcher<'a> { selector, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(Number<'a> { value, raw, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(PageSelector<'a> { name, pseudo, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(PageSelectorList<'a> { selectors, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(Percentage<'a> { value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(PostcssSimpleVar<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(PostcssSimpleVarDeclaration<'a> { name, colon_span, value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(PseudoClassSelector<'a> { name, arg, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(PseudoClassSelectorArg<'a> { kind, l_paren, r_paren, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(PseudoClassSelectorArgKind<'a> {
    tuple: [CompoundSelector, CompoundSelectorList, Ident, LanguageRangeList, Nth, Number, RelativeSelectorList, SelectorList, LessExtendList, TokenSeq, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(PseudoElementSelector<'a> { name, arg, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(PseudoElementSelectorArg<'a> { kind, l_paren, r_paren, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(PseudoElementSelectorArgKind<'a> {
    tuple: [CompoundSelector, Ident, TokenSeq, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(PseudoPage<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(QualifiedRule<'a> { selector, block, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(QueryInParens<'a> { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(QueryInParensKind<'a> {
    tuple: [ContainerCondition, SizeFeature, StyleQuery, ScrollState, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(Ratio<'a> { numerator, solidus_span, denominator, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(RelativeSelector<'a> { combinator, complex_selector, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(RelativeSelectorList<'a> { selectors, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassArbitraryArgument<'a> { value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassArbitraryParameter<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassAtRoot<'a> { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SassAtRootKind<'a> {
    tuple: [Selector, Query, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassAtRootQuery<'a> { modifier, colon_span, rules, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassAtRootQueryModifier { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SassAtRootQueryModifierKind {
    tuple: [],
    unit: [With, Without, ],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SassAtRootQueryRule<'a> {
    tuple: [Ident, Str, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassBinaryExpression<'a> { left, op, right, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassBinaryOperator { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SassBinaryOperatorKind {
    tuple: [],
    unit: [Multiply, Division, Modulo, Plus, Minus, GreaterThan, GreaterThanOrEqual, LessThan, LessThanOrEqual, EqualsEquals, ExclamationEquals, And, Or, ],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassConditionalClause<'a> { condition, block, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassContent<'a> { args, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassEach<'a> { bindings, comma_spans, in_span, expr, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassExtend<'a> { selectors, optional, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassFlag<'a> { keyword, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassFor<'a> { binding, from_span, start, end, boundary, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassForBoundary { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SassForBoundaryKind {
    tuple: [],
    unit: [Inclusive, Exclusive, ],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassForward<'a> { path, prefix, visibility, config, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SassForwardMember<'a> {
    tuple: [Ident, Variable, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassForwardPrefix<'a> { as_span, name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassForwardVisibility<'a> { modifier, members, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassForwardVisibilityModifier { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SassForwardVisibilityModifierKind {
    tuple: [],
    unit: [Hide, Show, ],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassFunction<'a> { name, parameters, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassIfAtRule<'a> { if_clause, else_if_clauses, else_clause, else_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassImportPrelude<'a> { paths, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassInclude<'a> { name, arguments, content_block_params, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassIncludeArgs<'a> { args, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassIncludeContentBlockParams<'a> { using_span, params, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassInterpolatedIdent<'a> { elements, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SassInterpolatedIdentElement<'a> {
    tuple: [Expression, Static, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassInterpolatedStr<'a> { elements, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SassInterpolatedStrElement<'a> {
    tuple: [Expression, Static, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassInterpolatedUrl<'a> { elements, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SassInterpolatedUrlElement<'a> {
    tuple: [Expression, Static, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassKeywordArgument<'a> { name, colon_span, value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassList<'a> { elements, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassMap<'a> { items, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassMapItem<'a> { key, colon_span, value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassMixin<'a> { name, parameters, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassModuleConfig<'a> { with_span, lparen_span, items, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassModuleConfigItem<'a> { variable, colon_span, value, flags, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SassModuleMemberName<'a> {
    tuple: [Ident, Variable, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassNestingDeclaration<'a> { block, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassParameter<'a> { name, default_value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassParameterDefaultValue<'a> { colon_span, value, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassParameters<'a> { params, arbitrary_param, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassParenthesizedExpression<'a> { expr, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassPlaceholderSelector<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassQualifiedName<'a> { module, member, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassUnaryExpression<'a> { op, expr, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassUnaryOperator { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SassUnaryOperatorKind {
    tuple: [],
    unit: [Plus, Minus, Not, ],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassUnnamedNamespace {});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassUse<'a> { path, namespace, config, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassUseNamespace<'a> { as_span, kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SassUseNamespaceKind<'a> {
    tuple: [Named, Unnamed, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassVariable<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SassVariableDeclaration<'a> { namespace, name, colon_span, value, flags, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(ScopeEnd<'a> { to_span, lparen_span, selector, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(ScopePrelude<'a> {
    tuple: [StartOnly, EndOnly, Both, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(ScopeStart<'a> { selector, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(ScopeStartWithEnd<'a> { start, end, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SelectorList<'a> { selectors, comma_spans, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SimpleBlock<'a> { statements, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SimpleSelector<'a> {
    tuple: [Class, Id, Type, Attribute, PseudoClass, PseudoElement, Nesting, SassPlaceholder, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(Statement<'a> {
    tuple: [AtRule, Declaration, KeyframeBlock, LessConditionalQualifiedRule, LessExtendRule, LessFunctionCall, LessMixinCall, LessMixinDefinition, LessVariableCall, LessVariableDeclaration, Placeholder, PostcssSimpleVarDeclaration, QualifiedRule, SassIfAtRule, SassVariableDeclaration, UnknownSassAtRule, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(Str<'a> { value, raw, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(StyleCondition<'a> { conditions, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(StyleConditionKind<'a> {
    tuple: [StyleInParens, And, Or, Not, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(StyleConditionAnd<'a> { keyword, style_in_parens, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(StyleConditionNot<'a> { keyword, style_in_parens, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(StyleConditionOr<'a> { keyword, style_in_parens, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(StyleInParens<'a> { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(StyleInParensKind<'a> {
    tuple: [Condition, Feature, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(StyleQuery<'a> {
    tuple: [Condition, Feature, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(Stylesheet<'a> { statements, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SupportsAnd<'a> { keyword, condition, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SupportsCondition<'a> { conditions, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SupportsConditionKind<'a> {
    tuple: [Not, And, Or, SupportsInParens, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SupportsDecl<'a> { decl, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SupportsInParens<'a> { kind, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(SupportsInParensKind<'a> {
    tuple: [SupportsCondition, Feature, Selector, Function, GeneralEnclosed, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SupportsNot<'a> { keyword, condition, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(SupportsOr<'a> { keyword, condition, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(TagNameSelector<'a> { name, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(TokenSeq<'a> { tokens, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(TypeSelector<'a> {
    tuple: [TagName, Universal, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(UnicodeRange<'a> { prefix, start, start_raw, end, end_raw, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(UniversalSelector<'a> { prefix, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(UnknownAtRulePrelude<'a> {
    tuple: [ComponentValue, TokenSeq, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(UnknownSassAtRule<'a> { name, prelude, block, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(UnquotedFontFamilyName<'a> { idents, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(Url<'a> { name, value, modifiers, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(UrlModifier<'a> {
    tuple: [Ident, Function, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(UrlRaw<'a> { value, raw, });
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_enum!(UrlValue<'a> {
    tuple: [Raw, SassInterpolated, Str, LessEscapedStr, ],
    unit: [],
});
#[cfg(feature = "span_ignored_eq")]
impl_span_ignored_eq_struct!(WqName<'a> { name, prefix, });

// EnumAsIs
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(AtRulePrelude<'a> {
    tuple: [
        Charset(Str<'a>) => is_charset, as_charset,
        ColorProfile(ColorProfilePrelude<'a>) => is_color_profile, as_color_profile,
        Container(ContainerPrelude<'a>) => is_container, as_container,
        CounterStyle(InterpolableIdent<'a>) => is_counter_style, as_counter_style,
        CustomMedia(Box<'a, CustomMedia<'a>>) => is_custom_media, as_custom_media,
        CustomSelector(Box<'a, CustomSelectorPrelude<'a>>) => is_custom_selector, as_custom_selector,
        Document(DocumentPrelude<'a>) => is_document, as_document,
        FontFeatureValues(FontFamilyName<'a>) => is_font_feature_values, as_font_feature_values,
        FontPaletteValues(InterpolableIdent<'a>) => is_font_palette_values, as_font_palette_values,
        Import(Box<'a, ImportPrelude<'a>>) => is_import, as_import,
        Keyframes(KeyframesName<'a>) => is_keyframes, as_keyframes,
        Layer(LayerNames<'a>) => is_layer, as_layer,
        LessImport(Box<'a, LessImportPrelude<'a>>) => is_less_import, as_less_import,
        LessPlugin(Box<'a, LessPlugin<'a>>) => is_less_plugin, as_less_plugin,
        Media(MediaQueryList<'a>) => is_media, as_media,
        Namespace(Box<'a, NamespacePrelude<'a>>) => is_namespace, as_namespace,
        Nest(SelectorList<'a>) => is_nest, as_nest,
        Page(PageSelectorList<'a>) => is_page, as_page,
        PositionTry(InterpolableIdent<'a>) => is_position_try, as_position_try,
        Property(InterpolableIdent<'a>) => is_property, as_property,
        SassAtRoot(SassAtRoot<'a>) => is_sass_at_root, as_sass_at_root,
        SassContent(SassContent<'a>) => is_sass_content, as_sass_content,
        SassEach(Box<'a, SassEach<'a>>) => is_sass_each, as_sass_each,
        SassExpr(Box<'a, ComponentValue<'a>>) => is_sass_expr, as_sass_expr,
        SassExtend(Box<'a, SassExtend<'a>>) => is_sass_extend, as_sass_extend,
        SassFor(Box<'a, SassFor<'a>>) => is_sass_for, as_sass_for,
        SassForward(Box<'a, SassForward<'a>>) => is_sass_forward, as_sass_forward,
        SassFunction(Box<'a, SassFunction<'a>>) => is_sass_function, as_sass_function,
        SassImport(SassImportPrelude<'a>) => is_sass_import, as_sass_import,
        SassInclude(Box<'a, SassInclude<'a>>) => is_sass_include, as_sass_include,
        SassMixin(Box<'a, SassMixin<'a>>) => is_sass_mixin, as_sass_mixin,
        SassUse(Box<'a, SassUse<'a>>) => is_sass_use, as_sass_use,
        Scope(Box<'a, ScopePrelude<'a>>) => is_scope, as_scope,
        ScrollTimeline(InterpolableIdent<'a>) => is_scroll_timeline, as_scroll_timeline,
        Supports(SupportsCondition<'a>) => is_supports, as_supports,
        Unknown(Box<'a, UnknownAtRulePrelude<'a>>) => is_unknown, as_unknown,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(AttributeSelectorValue<'a> {
    tuple: [
        Ident(InterpolableIdent<'a>) => is_ident, as_ident,
        Str(InterpolableStr<'a>) => is_str, as_str,
        Number(Number<'a>) => is_number, as_number,
        Dimension(Dimension<'a>) => is_dimension, as_dimension,
        Percentage(Percentage<'a>) => is_percentage, as_percentage,
        LessEscapedStr(LessEscapedStr<'a>) => is_less_escaped_str, as_less_escaped_str,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(ColorProfilePrelude<'a> {
    tuple: [
        DashedIdent(InterpolableIdent<'a>) => is_dashed_ident, as_dashed_ident,
        DeviceCmyk(Ident<'a>) => is_device_cmyk, as_device_cmyk,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(ComplexSelectorChild<'a> {
    tuple: [
        CompoundSelector(CompoundSelector<'a>) => is_compound_selector, as_compound_selector,
        Combinator(Combinator) => is_combinator, as_combinator,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(ComponentValue<'a> {
    tuple: [
        BracketBlock(BracketBlock<'a>) => is_bracket_block, as_bracket_block,
        Calc(Calc<'a>) => is_calc, as_calc,
        Delimiter(Delimiter) => is_delimiter, as_delimiter,
        Dimension(Dimension<'a>) => is_dimension, as_dimension,
        Function(Function<'a>) => is_function, as_function,
        HexColor(HexColor<'a>) => is_hex_color, as_hex_color,
        IdSelector(IdSelector<'a>) => is_id_selector, as_id_selector,
        ImportantAnnotation(ImportantAnnotation<'a>) => is_important_annotation, as_important_annotation,
        InterpolableIdent(InterpolableIdent<'a>) => is_interpolable_ident, as_interpolable_ident,
        InterpolableStr(InterpolableStr<'a>) => is_interpolable_str, as_interpolable_str,
        LayerName(LayerName<'a>) => is_layer_name, as_layer_name,
        LessBinaryOperation(LessBinaryOperation<'a>) => is_less_binary_operation, as_less_binary_operation,
        LessCondition(Box<'a, LessCondition<'a>>) => is_less_condition, as_less_condition,
        LessDetachedRuleset(LessDetachedRuleset<'a>) => is_less_detached_ruleset, as_less_detached_ruleset,
        LessEscapedStr(LessEscapedStr<'a>) => is_less_escaped_str, as_less_escaped_str,
        LessJavaScriptSnippet(LessJavaScriptSnippet<'a>) => is_less_java_script_snippet, as_less_java_script_snippet,
        LessList(LessList<'a>) => is_less_list, as_less_list,
        LessMixinCall(LessMixinCall<'a>) => is_less_mixin_call, as_less_mixin_call,
        LessNamespaceValue(Box<'a, LessNamespaceValue<'a>>) => is_less_namespace_value, as_less_namespace_value,
        LessNegativeValue(LessNegativeValue<'a>) => is_less_negative_value, as_less_negative_value,
        LessParenthesizedOperation(LessParenthesizedOperation<'a>) => is_less_parenthesized_operation, as_less_parenthesized_operation,
        LessPercentKeyword(LessPercentKeyword) => is_less_percent_keyword, as_less_percent_keyword,
        LessPropertyVariable(LessPropertyVariable<'a>) => is_less_property_variable, as_less_property_variable,
        LessVariable(LessVariable<'a>) => is_less_variable, as_less_variable,
        LessVariableVariable(LessVariableVariable<'a>) => is_less_variable_variable, as_less_variable_variable,
        Number(Number<'a>) => is_number, as_number,
        Percentage(Percentage<'a>) => is_percentage, as_percentage,
        Placeholder(Placeholder<'a>) => is_placeholder, as_placeholder,
        PostcssSimpleVar(PostcssSimpleVar<'a>) => is_postcss_simple_var, as_postcss_simple_var,
        Ratio(Ratio<'a>) => is_ratio, as_ratio,
        SassArbitraryArgument(SassArbitraryArgument<'a>) => is_sass_arbitrary_argument, as_sass_arbitrary_argument,
        SassBinaryExpression(SassBinaryExpression<'a>) => is_sass_binary_expression, as_sass_binary_expression,
        SassKeywordArgument(SassKeywordArgument<'a>) => is_sass_keyword_argument, as_sass_keyword_argument,
        SassList(SassList<'a>) => is_sass_list, as_sass_list,
        SassMap(SassMap<'a>) => is_sass_map, as_sass_map,
        SassQualifiedName(SassQualifiedName<'a>) => is_sass_qualified_name, as_sass_qualified_name,
        SassNestingDeclaration(SassNestingDeclaration<'a>) => is_sass_nesting_declaration, as_sass_nesting_declaration,
        SassParenthesizedExpression(SassParenthesizedExpression<'a>) => is_sass_parenthesized_expression, as_sass_parenthesized_expression,
        SassParentSelector(NestingSelector<'a>) => is_sass_parent_selector, as_sass_parent_selector,
        SassUnaryExpression(SassUnaryExpression<'a>) => is_sass_unary_expression, as_sass_unary_expression,
        SassVariable(SassVariable<'a>) => is_sass_variable, as_sass_variable,
        TokenWithSpan(TokenWithSpan<'a>) => is_token_with_span, as_token_with_span,
        UnicodeRange(UnicodeRange<'a>) => is_unicode_range, as_unicode_range,
        Url(Url<'a>) => is_url, as_url,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(ContainerConditionKind<'a> {
    tuple: [
        QueryInParens(QueryInParens<'a>) => is_query_in_parens, as_query_in_parens,
        And(ContainerConditionAnd<'a>) => is_and, as_and,
        Or(ContainerConditionOr<'a>) => is_or, as_or,
        Not(ContainerConditionNot<'a>) => is_not, as_not,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(CustomMediaValue<'a> {
    tuple: [
        MediaQueryList(MediaQueryList<'a>) => is_media_query_list, as_media_query_list,
        True(Ident<'a>) => is_true, as_true,
        False(Ident<'a>) => is_false, as_false,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(DocumentPreludeMatcher<'a> {
    tuple: [
        Url(Url<'a>) => is_url, as_url,
        Function(Function<'a>) => is_function, as_function,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(FontFamilyName<'a> {
    tuple: [
        Str(InterpolableStr<'a>) => is_str, as_str,
        Unquoted(UnquotedFontFamilyName<'a>) => is_unquoted, as_unquoted,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(FunctionName<'a> {
    tuple: [
        Ident(InterpolableIdent<'a>) => is_ident, as_ident,
        SassQualifiedName(Box<'a, SassQualifiedName<'a>>) => is_sass_qualified_name, as_sass_qualified_name,
        LessListFunction(LessListFunction) => is_less_list_function, as_less_list_function,
        LessFormatFunction(LessFormatFunction) => is_less_format_function, as_less_format_function,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(ImportPreludeHref<'a> {
    tuple: [
        Str(InterpolableStr<'a>) => is_str, as_str,
        Url(Url<'a>) => is_url, as_url,
        Function(Function<'a>) => is_function, as_function,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(ImportPreludeLayer<'a> {
    tuple: [
        Empty(Ident<'a>) => is_empty, as_empty,
        WithName(Function<'a>) => is_with_name, as_with_name,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(ImportPreludeSupportsKind<'a> {
    tuple: [
        SupportsCondition(SupportsCondition<'a>) => is_supports_condition, as_supports_condition,
        Declaration(Declaration<'a>) => is_declaration, as_declaration,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(InterpolableIdent<'a> {
    tuple: [
        Literal(Ident<'a>) => is_literal, as_literal,
        SassInterpolated(SassInterpolatedIdent<'a>) => is_sass_interpolated, as_sass_interpolated,
        LessInterpolated(LessInterpolatedIdent<'a>) => is_less_interpolated, as_less_interpolated,
        Placeholder(Placeholder<'a>) => is_placeholder, as_placeholder,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(InterpolableStr<'a> {
    tuple: [
        Literal(Str<'a>) => is_literal, as_literal,
        SassInterpolated(SassInterpolatedStr<'a>) => is_sass_interpolated, as_sass_interpolated,
        LessInterpolated(LessInterpolatedStr<'a>) => is_less_interpolated, as_less_interpolated,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(KeyframeSelector<'a> {
    tuple: [
        Ident(InterpolableIdent<'a>) => is_ident, as_ident,
        Percentage(Percentage<'a>) => is_percentage, as_percentage,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(KeyframesName<'a> {
    tuple: [
        Ident(InterpolableIdent<'a>) => is_ident, as_ident,
        Str(InterpolableStr<'a>) => is_str, as_str,
        LessVariable(LessVariable<'a>) => is_less_variable, as_less_variable,
        LessEscapedStr(LessEscapedStr<'a>) => is_less_escaped_str, as_less_escaped_str,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(LanguageRange<'a> {
    tuple: [
        Str(InterpolableStr<'a>) => is_str, as_str,
        Ident(InterpolableIdent<'a>) => is_ident, as_ident,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(LessCondition<'a> {
    tuple: [
        Binary(LessBinaryCondition<'a>) => is_binary, as_binary,
        Negated(LessNegatedCondition<'a>) => is_negated, as_negated,
        Parenthesized(LessParenthesizedCondition<'a>) => is_parenthesized, as_parenthesized,
        Value(ComponentValue<'a>) => is_value, as_value,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(LessInterpolatedIdentElement<'a> {
    tuple: [
        Variable(LessVariableInterpolation<'a>) => is_variable, as_variable,
        Property(LessPropertyInterpolation<'a>) => is_property, as_property,
        Static(InterpolableIdentStaticPart<'a>) => is_static, as_static,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(LessInterpolatedStrElement<'a> {
    tuple: [
        Variable(LessVariableInterpolation<'a>) => is_variable, as_variable,
        Property(LessPropertyInterpolation<'a>) => is_property, as_property,
        Static(InterpolableStrStaticPart<'a>) => is_static, as_static,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(LessLookupName<'a> {
    tuple: [
        LessVariable(LessVariable<'a>) => is_less_variable, as_less_variable,
        LessVariableVariable(LessVariableVariable<'a>) => is_less_variable_variable, as_less_variable_variable,
        LessPropertyVariable(LessPropertyVariable<'a>) => is_less_property_variable, as_less_property_variable,
        Ident(Ident<'a>) => is_ident, as_ident,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(LessMixinArgument<'a> {
    tuple: [
        Named(LessMixinNamedArgument<'a>) => is_named, as_named,
        Value(ComponentValue<'a>) => is_value, as_value,
        Variadic(LessMixinVariadicArgument<'a>) => is_variadic, as_variadic,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(LessMixinName<'a> {
    tuple: [
        ClassSelector(ClassSelector<'a>) => is_class_selector, as_class_selector,
        IdSelector(IdSelector<'a>) => is_id_selector, as_id_selector,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(LessMixinParameter<'a> {
    tuple: [
        Named(LessMixinNamedParameter<'a>) => is_named, as_named,
        Unnamed(LessMixinUnnamedParameter<'a>) => is_unnamed, as_unnamed,
        Variadic(LessMixinVariadicParameter<'a>) => is_variadic, as_variadic,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(LessMixinParameterName<'a> {
    tuple: [
        Variable(LessVariable<'a>) => is_variable, as_variable,
        PropertyVariable(LessPropertyVariable<'a>) => is_property_variable, as_property_variable,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(LessNamespaceValueCallee<'a> {
    tuple: [
        LessMixinCall(LessMixinCall<'a>) => is_less_mixin_call, as_less_mixin_call,
        LessVariable(LessVariable<'a>) => is_less_variable, as_less_variable,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(LessPluginPath<'a> {
    tuple: [
        Str(Str<'a>) => is_str, as_str,
        Url(Url<'a>) => is_url, as_url,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(MediaConditionKind<'a> {
    tuple: [
        MediaInParens(MediaInParens<'a>) => is_media_in_parens, as_media_in_parens,
        And(MediaAnd<'a>) => is_and, as_and,
        Or(MediaOr<'a>) => is_or, as_or,
        Not(MediaNot<'a>) => is_not, as_not,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(MediaFeature<'a> {
    tuple: [
        Plain(MediaFeaturePlain<'a>) => is_plain, as_plain,
        Boolean(MediaFeatureBoolean<'a>) => is_boolean, as_boolean,
        Range(MediaFeatureRange<'a>) => is_range, as_range,
        RangeInterval(MediaFeatureRangeInterval<'a>) => is_range_interval, as_range_interval,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(MediaFeatureName<'a> {
    tuple: [
        Ident(InterpolableIdent<'a>) => is_ident, as_ident,
        PostcssSimpleVar(PostcssSimpleVar<'a>) => is_postcss_simple_var, as_postcss_simple_var,
        SassVariable(SassVariable<'a>) => is_sass_variable, as_sass_variable,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(MediaInParensKind<'a> {
    tuple: [
        MediaCondition(MediaCondition<'a>) => is_media_condition, as_media_condition,
        MediaFeature(Box<'a, MediaFeature<'a>>) => is_media_feature, as_media_feature,
        GeneralEnclosed(TokenSeq<'a>) => is_general_enclosed, as_general_enclosed,
        SassInterpolation(SassInterpolatedIdent<'a>) => is_sass_interpolation, as_sass_interpolation,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(MediaQuery<'a> {
    tuple: [
        ConditionOnly(MediaCondition<'a>) => is_condition_only, as_condition_only,
        WithType(MediaQueryWithType<'a>) => is_with_type, as_with_type,
        Function(Function<'a>) => is_function, as_function,
        LessVariable(LessVariable<'a>) => is_less_variable, as_less_variable,
        LessNamespaceValue(Box<'a, LessNamespaceValue<'a>>) => is_less_namespace_value, as_less_namespace_value,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(NamespacePreludeUri<'a> {
    tuple: [
        Str(InterpolableStr<'a>) => is_str, as_str,
        Url(Url<'a>) => is_url, as_url,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(NsPrefixKind<'a> {
    tuple: [
        Ident(InterpolableIdent<'a>) => is_ident, as_ident,
        Universal(NsPrefixUniversal) => is_universal, as_universal,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(NthIndex<'a> {
    tuple: [
        Odd(Ident<'a>) => is_odd, as_odd,
        Even(Ident<'a>) => is_even, as_even,
        Integer(Number<'a>) => is_integer, as_integer,
        AnPlusB(AnPlusB) => is_an_plus_b, as_an_plus_b,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(PseudoClassSelectorArgKind<'a> {
    tuple: [
        CompoundSelector(CompoundSelector<'a>) => is_compound_selector, as_compound_selector,
        CompoundSelectorList(CompoundSelectorList<'a>) => is_compound_selector_list, as_compound_selector_list,
        Ident(InterpolableIdent<'a>) => is_ident, as_ident,
        LanguageRangeList(LanguageRangeList<'a>) => is_language_range_list, as_language_range_list,
        Nth(Nth<'a>) => is_nth, as_nth,
        Number(Number<'a>) => is_number, as_number,
        RelativeSelectorList(RelativeSelectorList<'a>) => is_relative_selector_list, as_relative_selector_list,
        SelectorList(SelectorList<'a>) => is_selector_list, as_selector_list,
        LessExtendList(LessExtendList<'a>) => is_less_extend_list, as_less_extend_list,
        TokenSeq(TokenSeq<'a>) => is_token_seq, as_token_seq,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(PseudoElementSelectorArgKind<'a> {
    tuple: [
        CompoundSelector(CompoundSelector<'a>) => is_compound_selector, as_compound_selector,
        Ident(InterpolableIdent<'a>) => is_ident, as_ident,
        TokenSeq(TokenSeq<'a>) => is_token_seq, as_token_seq,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(QueryInParensKind<'a> {
    tuple: [
        ContainerCondition(ContainerCondition<'a>) => is_container_condition, as_container_condition,
        SizeFeature(Box<'a, MediaFeature<'a>>) => is_size_feature, as_size_feature,
        StyleQuery(StyleQuery<'a>) => is_style_query, as_style_query,
        ScrollState(Box<'a, MediaFeature<'a>>) => is_scroll_state, as_scroll_state,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(SassAtRootKind<'a> {
    tuple: [
        Selector(SelectorList<'a>) => is_selector, as_selector,
        Query(SassAtRootQuery<'a>) => is_query, as_query,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(SassAtRootQueryRule<'a> {
    tuple: [
        Ident(InterpolableIdent<'a>) => is_ident, as_ident,
        Str(InterpolableStr<'a>) => is_str, as_str,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(SassForwardMember<'a> {
    tuple: [
        Ident(Ident<'a>) => is_ident, as_ident,
        Variable(SassVariable<'a>) => is_variable, as_variable,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(SassInterpolatedIdentElement<'a> {
    tuple: [
        Expression(ComponentValue<'a>) => is_expression, as_expression,
        Static(InterpolableIdentStaticPart<'a>) => is_static, as_static,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(SassInterpolatedStrElement<'a> {
    tuple: [
        Expression(ComponentValue<'a>) => is_expression, as_expression,
        Static(InterpolableStrStaticPart<'a>) => is_static, as_static,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(SassInterpolatedUrlElement<'a> {
    tuple: [
        Expression(ComponentValue<'a>) => is_expression, as_expression,
        Static(InterpolableUrlStaticPart<'a>) => is_static, as_static,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(SassModuleMemberName<'a> {
    tuple: [
        Ident(Ident<'a>) => is_ident, as_ident,
        Variable(SassVariable<'a>) => is_variable, as_variable,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(SassUseNamespaceKind<'a> {
    tuple: [
        Named(Ident<'a>) => is_named, as_named,
        Unnamed(SassUnnamedNamespace) => is_unnamed, as_unnamed,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(ScopePrelude<'a> {
    tuple: [
        StartOnly(ScopeStart<'a>) => is_start_only, as_start_only,
        EndOnly(ScopeEnd<'a>) => is_end_only, as_end_only,
        Both(ScopeStartWithEnd<'a>) => is_both, as_both,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(SimpleSelector<'a> {
    tuple: [
        Class(ClassSelector<'a>) => is_class, as_class,
        Id(IdSelector<'a>) => is_id, as_id,
        Type(TypeSelector<'a>) => is_type, as_type,
        Attribute(AttributeSelector<'a>) => is_attribute, as_attribute,
        PseudoClass(PseudoClassSelector<'a>) => is_pseudo_class, as_pseudo_class,
        PseudoElement(PseudoElementSelector<'a>) => is_pseudo_element, as_pseudo_element,
        Nesting(NestingSelector<'a>) => is_nesting, as_nesting,
        SassPlaceholder(SassPlaceholderSelector<'a>) => is_sass_placeholder, as_sass_placeholder,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(Statement<'a> {
    tuple: [
        AtRule(AtRule<'a>) => is_at_rule, as_at_rule,
        Declaration(Declaration<'a>) => is_declaration, as_declaration,
        KeyframeBlock(KeyframeBlock<'a>) => is_keyframe_block, as_keyframe_block,
        LessConditionalQualifiedRule(LessConditionalQualifiedRule<'a>) => is_less_conditional_qualified_rule, as_less_conditional_qualified_rule,
        LessExtendRule(LessExtendRule<'a>) => is_less_extend_rule, as_less_extend_rule,
        LessFunctionCall(Function<'a>) => is_less_function_call, as_less_function_call,
        LessMixinCall(LessMixinCall<'a>) => is_less_mixin_call, as_less_mixin_call,
        LessMixinDefinition(LessMixinDefinition<'a>) => is_less_mixin_definition, as_less_mixin_definition,
        LessVariableCall(LessVariableCall<'a>) => is_less_variable_call, as_less_variable_call,
        LessVariableDeclaration(LessVariableDeclaration<'a>) => is_less_variable_declaration, as_less_variable_declaration,
        Placeholder(Placeholder<'a>) => is_placeholder, as_placeholder,
        PostcssSimpleVarDeclaration(PostcssSimpleVarDeclaration<'a>) => is_postcss_simple_var_declaration, as_postcss_simple_var_declaration,
        QualifiedRule(QualifiedRule<'a>) => is_qualified_rule, as_qualified_rule,
        SassIfAtRule(SassIfAtRule<'a>) => is_sass_if_at_rule, as_sass_if_at_rule,
        SassVariableDeclaration(SassVariableDeclaration<'a>) => is_sass_variable_declaration, as_sass_variable_declaration,
        UnknownSassAtRule(Box<'a, UnknownSassAtRule<'a>>) => is_unknown_sass_at_rule, as_unknown_sass_at_rule,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(StyleConditionKind<'a> {
    tuple: [
        StyleInParens(StyleInParens<'a>) => is_style_in_parens, as_style_in_parens,
        And(StyleConditionAnd<'a>) => is_and, as_and,
        Or(StyleConditionOr<'a>) => is_or, as_or,
        Not(StyleConditionNot<'a>) => is_not, as_not,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(StyleInParensKind<'a> {
    tuple: [
        Condition(StyleCondition<'a>) => is_condition, as_condition,
        Feature(Declaration<'a>) => is_feature, as_feature,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(StyleQuery<'a> {
    tuple: [
        Condition(StyleCondition<'a>) => is_condition, as_condition,
        Feature(Declaration<'a>) => is_feature, as_feature,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(SupportsConditionKind<'a> {
    tuple: [
        Not(SupportsNot<'a>) => is_not, as_not,
        And(SupportsAnd<'a>) => is_and, as_and,
        Or(SupportsOr<'a>) => is_or, as_or,
        SupportsInParens(SupportsInParens<'a>) => is_supports_in_parens, as_supports_in_parens,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(SupportsInParensKind<'a> {
    tuple: [
        SupportsCondition(SupportsCondition<'a>) => is_supports_condition, as_supports_condition,
        Feature(Box<'a, SupportsDecl<'a>>) => is_feature, as_feature,
        Selector(SelectorList<'a>) => is_selector, as_selector,
        Function(Function<'a>) => is_function, as_function,
        GeneralEnclosed(TokenSeq<'a>) => is_general_enclosed, as_general_enclosed,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(TypeSelector<'a> {
    tuple: [
        TagName(TagNameSelector<'a>) => is_tag_name, as_tag_name,
        Universal(UniversalSelector<'a>) => is_universal, as_universal,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(UnknownAtRulePrelude<'a> {
    tuple: [
        ComponentValue(ComponentValue<'a>) => is_component_value, as_component_value,
        TokenSeq(TokenSeq<'a>) => is_token_seq, as_token_seq,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(UrlModifier<'a> {
    tuple: [
        Ident(InterpolableIdent<'a>) => is_ident, as_ident,
        Function(Function<'a>) => is_function, as_function,
    ],
    unit: [],
});
#[cfg(feature = "variant_helpers")]
impl_enum_as_is!(UrlValue<'a> {
    tuple: [
        Raw(UrlRaw<'a>) => is_raw, as_raw,
        SassInterpolated(SassInterpolatedUrl<'a>) => is_sass_interpolated, as_sass_interpolated,
        Str(InterpolableStr<'a>) => is_str, as_str,
        LessEscapedStr(LessEscapedStr<'a>) => is_less_escaped_str, as_less_escaped_str,
    ],
    unit: [],
});