Skip to main content

m2_syn/gen/
tokens.rs

1// @generated by `cargo run -p m2-syn-macros --bin generate`; do not edit.
2
3#[doc(hidden)]
4mod __m2_syn_delimiters {
5    use ::m2_syn::{
6        DelimiterKind, DelimiterToken, Parse, ParseStream, PrettyNode, PrettyTree, Span, Spanned,
7        ToTokens, TokenParseError, TokenStream, parse_delimiter,
8    };
9    #[derive(Debug, Clone, Copy, PartialEq, Eq, Spanned)]
10    pub struct _EmptyDelimiter {
11        span: Span,
12    }
13    #[doc(hidden)]
14    #[allow(non_snake_case)]
15    pub fn _EmptyDelimiter<S: Spanned>(span: S) -> _EmptyDelimiter {
16        <_EmptyDelimiter as DelimiterToken>::new(span.span())
17    }
18    impl DelimiterToken for _EmptyDelimiter {
19        const KIND: DelimiterKind = DelimiterKind::Empty;
20        fn new(span: Span) -> Self {
21            Self { span }
22        }
23    }
24    impl Parse for _EmptyDelimiter {
25        fn parse(input: &mut ParseStream) -> Result<Self, TokenParseError> {
26            parse_delimiter(input)
27        }
28    }
29    impl ToTokens for _EmptyDelimiter {
30        fn to_tokens(&self, output: &mut TokenStream) {
31            self.surround(output, TokenStream::new());
32        }
33    }
34    impl PrettyTree for _EmptyDelimiter {
35        fn pretty_tree(&self) -> PrettyNode {
36            PrettyNode::delimiter(Self::KIND, self.span())
37        }
38    }
39    #[derive(Debug, Clone, Copy, PartialEq, Eq, Spanned)]
40    pub struct _SemicolonDelimiter {
41        span: Span,
42    }
43    #[doc(hidden)]
44    #[allow(non_snake_case)]
45    pub fn _SemicolonDelimiter<S: Spanned>(span: S) -> _SemicolonDelimiter {
46        <_SemicolonDelimiter as DelimiterToken>::new(span.span())
47    }
48    impl DelimiterToken for _SemicolonDelimiter {
49        const KIND: DelimiterKind = DelimiterKind::Semicolon;
50        fn new(span: Span) -> Self {
51            Self { span }
52        }
53    }
54    impl Parse for _SemicolonDelimiter {
55        fn parse(input: &mut ParseStream) -> Result<Self, TokenParseError> {
56            parse_delimiter(input)
57        }
58    }
59    impl ToTokens for _SemicolonDelimiter {
60        fn to_tokens(&self, output: &mut TokenStream) {
61            self.surround(output, TokenStream::new());
62        }
63    }
64    impl PrettyTree for _SemicolonDelimiter {
65        fn pretty_tree(&self) -> PrettyNode {
66            PrettyNode::delimiter(Self::KIND, self.span())
67        }
68    }
69    #[derive(Debug, Clone, Copy, PartialEq, Eq, Spanned)]
70    pub struct _ParenthesisDelimiter {
71        span: Span,
72    }
73    #[doc(hidden)]
74    #[allow(non_snake_case)]
75    pub fn _ParenthesisDelimiter<S: Spanned>(span: S) -> _ParenthesisDelimiter {
76        <_ParenthesisDelimiter as DelimiterToken>::new(span.span())
77    }
78    impl DelimiterToken for _ParenthesisDelimiter {
79        const KIND: DelimiterKind = DelimiterKind::Parenthesis;
80        fn new(span: Span) -> Self {
81            Self { span }
82        }
83    }
84    impl Parse for _ParenthesisDelimiter {
85        fn parse(input: &mut ParseStream) -> Result<Self, TokenParseError> {
86            parse_delimiter(input)
87        }
88    }
89    impl ToTokens for _ParenthesisDelimiter {
90        fn to_tokens(&self, output: &mut TokenStream) {
91            self.surround(output, TokenStream::new());
92        }
93    }
94    impl PrettyTree for _ParenthesisDelimiter {
95        fn pretty_tree(&self) -> PrettyNode {
96            PrettyNode::delimiter(Self::KIND, self.span())
97        }
98    }
99    #[derive(Debug, Clone, Copy, PartialEq, Eq, Spanned)]
100    pub struct _BracketDelimiter {
101        span: Span,
102    }
103    #[doc(hidden)]
104    #[allow(non_snake_case)]
105    pub fn _BracketDelimiter<S: Spanned>(span: S) -> _BracketDelimiter {
106        <_BracketDelimiter as DelimiterToken>::new(span.span())
107    }
108    impl DelimiterToken for _BracketDelimiter {
109        const KIND: DelimiterKind = DelimiterKind::Bracket;
110        fn new(span: Span) -> Self {
111            Self { span }
112        }
113    }
114    impl Parse for _BracketDelimiter {
115        fn parse(input: &mut ParseStream) -> Result<Self, TokenParseError> {
116            parse_delimiter(input)
117        }
118    }
119    impl ToTokens for _BracketDelimiter {
120        fn to_tokens(&self, output: &mut TokenStream) {
121            self.surround(output, TokenStream::new());
122        }
123    }
124    impl PrettyTree for _BracketDelimiter {
125        fn pretty_tree(&self) -> PrettyNode {
126            PrettyNode::delimiter(Self::KIND, self.span())
127        }
128    }
129    #[derive(Debug, Clone, Copy, PartialEq, Eq, Spanned)]
130    pub struct _BraceDelimiter {
131        span: Span,
132    }
133    #[doc(hidden)]
134    #[allow(non_snake_case)]
135    pub fn _BraceDelimiter<S: Spanned>(span: S) -> _BraceDelimiter {
136        <_BraceDelimiter as DelimiterToken>::new(span.span())
137    }
138    impl DelimiterToken for _BraceDelimiter {
139        const KIND: DelimiterKind = DelimiterKind::Brace;
140        fn new(span: Span) -> Self {
141            Self { span }
142        }
143    }
144    impl Parse for _BraceDelimiter {
145        fn parse(input: &mut ParseStream) -> Result<Self, TokenParseError> {
146            parse_delimiter(input)
147        }
148    }
149    impl ToTokens for _BraceDelimiter {
150        fn to_tokens(&self, output: &mut TokenStream) {
151            self.surround(output, TokenStream::new());
152        }
153    }
154    impl PrettyTree for _BraceDelimiter {
155        fn pretty_tree(&self) -> PrettyNode {
156            PrettyNode::delimiter(Self::KIND, self.span())
157        }
158    }
159    #[derive(Debug, Clone, Copy, PartialEq, Eq, Spanned)]
160    pub struct _AngleBarDelimiter {
161        span: Span,
162    }
163    #[doc(hidden)]
164    #[allow(non_snake_case)]
165    pub fn _AngleBarDelimiter<S: Spanned>(span: S) -> _AngleBarDelimiter {
166        <_AngleBarDelimiter as DelimiterToken>::new(span.span())
167    }
168    impl DelimiterToken for _AngleBarDelimiter {
169        const KIND: DelimiterKind = DelimiterKind::AngleBar;
170        fn new(span: Span) -> Self {
171            Self { span }
172        }
173    }
174    impl Parse for _AngleBarDelimiter {
175        fn parse(input: &mut ParseStream) -> Result<Self, TokenParseError> {
176            parse_delimiter(input)
177        }
178    }
179    impl ToTokens for _AngleBarDelimiter {
180        fn to_tokens(&self, output: &mut TokenStream) {
181            self.surround(output, TokenStream::new());
182        }
183    }
184    impl PrettyTree for _AngleBarDelimiter {
185        fn pretty_tree(&self) -> PrettyNode {
186            PrettyNode::delimiter(Self::KIND, self.span())
187        }
188    }
189}
190#[doc(hidden)]
191pub use __m2_syn_delimiters::*;
192#[macro_export]
193macro_rules! Delimiter {
194    [] => { $crate::_EmptyDelimiter };
195    [;] => { $crate::_SemicolonDelimiter };
196    [()] => { $crate::_ParenthesisDelimiter };
197    [[]] => { $crate::_BracketDelimiter };
198    [{}] => { $crate::_BraceDelimiter };
199    [<| |>] => { $crate::_AngleBarDelimiter };
200    [$($unsupported:tt)*] => { compile_error!("delimiter was not declared") };
201}
202pub(crate) const PREC_CLOSER: u8 = 6;
203pub(crate) const PREC_SEMICOLON: u8 = 8;
204pub(crate) const PREC_COMMA: u8 = 10;
205pub(crate) const PREC_CONTROL: u8 = 12;
206pub(crate) const PREC_LOOP_CLAUSE: u8 = 16;
207pub(crate) const PREC_COLLECTION: u8 = 56;
208pub(crate) const PREC_APPLICATION_RIGHT: u8 = 61;
209pub(crate) const PREC_APPLICATION: u8 = 62;
210pub(crate) const PREC_QUOTE: u8 = 74;
211pub(crate) const GENERATED_OPERATOR_SPELLINGS: &[&str] = &[
212    "!=", "#", "#?", "%", "%=", "&", "&=", "*", "*=", "**", "**=", "+", "+=", "++", "++=", "-",
213    "-=", "->", ".", "..", "..=", "..<", "..<=", ".?", "/", "/=", "//", "//=", ":", ":=", "<",
214    "<-", "<<", "<<=", "<=", "<==", "<===", "<==>", "<==>=", "=", "=!=", "==", "===", "===>",
215    "===>=", "==>", "==>=", "=>", ">", ">=", ">>", ">>=", "?", "??", "??=", "@", "@=", "@@", "@@=",
216    "@@?", "@@?=", "\\", "\\=", "\\\\", "\\\\=", "^", "^=", "^**", "^**=", "^<", "^<=", "^>",
217    "^>=", "^^", "^^=", "_", "_=", "_<", "_<=", "_>", "_>=", "|", "|=", "|-", "|-=", "|_", "|_=",
218    "||", "||=", "~", "~=", "·", "·=", "⊠", "⊠=", "⧢", "⧢=", "and", "or", "SPACE", "xor", "!",
219    "(*)", "^!", "^*", "^~", "_!", "_*", "_~", "not",
220];
221pub(crate) const GENERATED_POSTFIX_OPERATOR_SPELLINGS: &[&str] =
222    &["!", "(*)", "^!", "^*", "^~", "_!", "_*", "_~"];
223pub(crate) const GENERATED_KEYWORD_SPELLINGS: &[&str] = &[
224    "break",
225    "breakpoint",
226    "catch",
227    "continue",
228    "do",
229    "elapsedTime",
230    "elapsedTiming",
231    "else",
232    "except",
233    "finish",
234    "for",
235    "from",
236    "global",
237    "if",
238    "in",
239    "list",
240    "local",
241    "new",
242    "of",
243    "profile",
244    "return",
245    "shield",
246    "step",
247    "symbol",
248    "TEST",
249    "then",
250    "threadLocal",
251    "threadVariable",
252    "throw",
253    "time",
254    "timing",
255    "to",
256    "trap",
257    "try",
258    "when",
259    "while",
260];
261pub(crate) const GENERATED_PUNCTUATION_SPELLINGS: &[&str] = &[
262    "!=", "#", "#?", "%", "%=", "&", "&=", "*", "*=", "**", "**=", "+", "+=", "++", "++=", "-",
263    "-=", "->", ".", "..", "..=", "..<", "..<=", ".?", "/", "/=", "//", "//=", ":", ":=", "<",
264    "<-", "<<", "<<=", "<=", "<==", "<===", "<==>", "<==>=", "=", "=!=", "==", "===", "===>",
265    "===>=", "==>", "==>=", "=>", ">", ">=", ">>", ">>=", "?", "??", "??=", "@", "@=", "@@", "@@=",
266    "@@?", "@@?=", "\\", "\\=", "\\\\", "\\\\=", "^", "^=", "^**", "^**=", "^<", "^<=", "^>",
267    "^>=", "^^", "^^=", "_", "_=", "_<", "_<=", "_>", "_>=", "|", "|=", "|-", "|-=", "|_", "|_=",
268    "||", "||=", "~", "~=", "·", "·=", "⊠", "⊠=", "⧢", "⧢=", "!", "(*)", "^!", "^*", "^~", "_!",
269    "_*", "_~", ";", ",",
270];
271#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
272pub struct _BngEql {
273    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
274}
275#[doc(hidden)]
276#[allow(non_snake_case)]
277pub fn _BngEql<S: ::m2_syn::Spanned>(span: S) -> _BngEql {
278    let span = span.span();
279    _BngEql {
280        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("!=", span))),
281    }
282}
283impl ::m2_syn::Token for _BngEql {
284    const SPELLING: &'static str = "!=";
285    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
286        match token {
287            ::m2_syn::TokenTree::Punct(token) => token.text() == "!=",
288            _ => false,
289        }
290    }
291    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
292        Self::matches_token_tree(&token).then_some(Self {
293            raw: ::std::boxed::Box::new(token),
294        })
295    }
296}
297impl ::m2_syn::Parse for _BngEql {
298    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
299        input.parse_token()
300    }
301}
302impl ::m2_syn::ToTokens for _BngEql {
303    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
304        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
305    }
306}
307impl ::m2_syn::PrettyTree for _BngEql {
308    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
309        ::m2_syn::PrettyNode::token(
310            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
311            <Self as ::m2_syn::Token>::SPELLING,
312            ::m2_syn::Spanned::span(self),
313        )
314    }
315}
316impl<N> ::m2_syn::Reconstruct<N> for _BngEql
317where
318    N: ::m2_syn::ExternalCstNode,
319{
320    fn matches(node: &N) -> bool {
321        node.identity().matches("!=", false)
322    }
323    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
324        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
325            return Err(::m2_syn::ReconstructError::wrong_node(
326                "!=",
327                false,
328                node.identity(),
329            ));
330        }
331        Ok(_BngEql(node.span()))
332    }
333}
334#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
335pub struct _Hsh {
336    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
337}
338#[doc(hidden)]
339#[allow(non_snake_case)]
340pub fn _Hsh<S: ::m2_syn::Spanned>(span: S) -> _Hsh {
341    let span = span.span();
342    _Hsh {
343        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("#", span))),
344    }
345}
346impl ::m2_syn::Token for _Hsh {
347    const SPELLING: &'static str = "#";
348    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
349        match token {
350            ::m2_syn::TokenTree::Punct(token) => token.text() == "#",
351            _ => false,
352        }
353    }
354    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
355        Self::matches_token_tree(&token).then_some(Self {
356            raw: ::std::boxed::Box::new(token),
357        })
358    }
359}
360impl ::m2_syn::Parse for _Hsh {
361    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
362        input.parse_token()
363    }
364}
365impl ::m2_syn::ToTokens for _Hsh {
366    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
367        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
368    }
369}
370impl ::m2_syn::PrettyTree for _Hsh {
371    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
372        ::m2_syn::PrettyNode::token(
373            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
374            <Self as ::m2_syn::Token>::SPELLING,
375            ::m2_syn::Spanned::span(self),
376        )
377    }
378}
379impl<N> ::m2_syn::Reconstruct<N> for _Hsh
380where
381    N: ::m2_syn::ExternalCstNode,
382{
383    fn matches(node: &N) -> bool {
384        node.identity().matches("#", false)
385    }
386    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
387        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
388            return Err(::m2_syn::ReconstructError::wrong_node(
389                "#",
390                false,
391                node.identity(),
392            ));
393        }
394        Ok(_Hsh(node.span()))
395    }
396}
397#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
398pub struct _HshQsm {
399    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
400}
401#[doc(hidden)]
402#[allow(non_snake_case)]
403pub fn _HshQsm<S: ::m2_syn::Spanned>(span: S) -> _HshQsm {
404    let span = span.span();
405    _HshQsm {
406        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("#?", span))),
407    }
408}
409impl ::m2_syn::Token for _HshQsm {
410    const SPELLING: &'static str = "#?";
411    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
412        match token {
413            ::m2_syn::TokenTree::Punct(token) => token.text() == "#?",
414            _ => false,
415        }
416    }
417    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
418        Self::matches_token_tree(&token).then_some(Self {
419            raw: ::std::boxed::Box::new(token),
420        })
421    }
422}
423impl ::m2_syn::Parse for _HshQsm {
424    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
425        input.parse_token()
426    }
427}
428impl ::m2_syn::ToTokens for _HshQsm {
429    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
430        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
431    }
432}
433impl ::m2_syn::PrettyTree for _HshQsm {
434    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
435        ::m2_syn::PrettyNode::token(
436            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
437            <Self as ::m2_syn::Token>::SPELLING,
438            ::m2_syn::Spanned::span(self),
439        )
440    }
441}
442impl<N> ::m2_syn::Reconstruct<N> for _HshQsm
443where
444    N: ::m2_syn::ExternalCstNode,
445{
446    fn matches(node: &N) -> bool {
447        node.identity().matches("#?", false)
448    }
449    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
450        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
451            return Err(::m2_syn::ReconstructError::wrong_node(
452                "#?",
453                false,
454                node.identity(),
455            ));
456        }
457        Ok(_HshQsm(node.span()))
458    }
459}
460#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
461pub struct _Mod {
462    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
463}
464#[doc(hidden)]
465#[allow(non_snake_case)]
466pub fn _Mod<S: ::m2_syn::Spanned>(span: S) -> _Mod {
467    let span = span.span();
468    _Mod {
469        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("%", span))),
470    }
471}
472impl ::m2_syn::Token for _Mod {
473    const SPELLING: &'static str = "%";
474    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
475        match token {
476            ::m2_syn::TokenTree::Punct(token) => token.text() == "%",
477            _ => false,
478        }
479    }
480    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
481        Self::matches_token_tree(&token).then_some(Self {
482            raw: ::std::boxed::Box::new(token),
483        })
484    }
485}
486impl ::m2_syn::Parse for _Mod {
487    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
488        input.parse_token()
489    }
490}
491impl ::m2_syn::ToTokens for _Mod {
492    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
493        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
494    }
495}
496impl ::m2_syn::PrettyTree for _Mod {
497    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
498        ::m2_syn::PrettyNode::token(
499            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
500            <Self as ::m2_syn::Token>::SPELLING,
501            ::m2_syn::Spanned::span(self),
502        )
503    }
504}
505impl<N> ::m2_syn::Reconstruct<N> for _Mod
506where
507    N: ::m2_syn::ExternalCstNode,
508{
509    fn matches(node: &N) -> bool {
510        node.identity().matches("%", false)
511    }
512    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
513        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
514            return Err(::m2_syn::ReconstructError::wrong_node(
515                "%",
516                false,
517                node.identity(),
518            ));
519        }
520        Ok(_Mod(node.span()))
521    }
522}
523#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
524pub struct _ModEql {
525    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
526}
527#[doc(hidden)]
528#[allow(non_snake_case)]
529pub fn _ModEql<S: ::m2_syn::Spanned>(span: S) -> _ModEql {
530    let span = span.span();
531    _ModEql {
532        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("%=", span))),
533    }
534}
535impl ::m2_syn::Token for _ModEql {
536    const SPELLING: &'static str = "%=";
537    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
538        match token {
539            ::m2_syn::TokenTree::Punct(token) => token.text() == "%=",
540            _ => false,
541        }
542    }
543    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
544        Self::matches_token_tree(&token).then_some(Self {
545            raw: ::std::boxed::Box::new(token),
546        })
547    }
548}
549impl ::m2_syn::Parse for _ModEql {
550    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
551        input.parse_token()
552    }
553}
554impl ::m2_syn::ToTokens for _ModEql {
555    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
556        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
557    }
558}
559impl ::m2_syn::PrettyTree for _ModEql {
560    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
561        ::m2_syn::PrettyNode::token(
562            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
563            <Self as ::m2_syn::Token>::SPELLING,
564            ::m2_syn::Spanned::span(self),
565        )
566    }
567}
568impl<N> ::m2_syn::Reconstruct<N> for _ModEql
569where
570    N: ::m2_syn::ExternalCstNode,
571{
572    fn matches(node: &N) -> bool {
573        node.identity().matches("%=", false)
574    }
575    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
576        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
577            return Err(::m2_syn::ReconstructError::wrong_node(
578                "%=",
579                false,
580                node.identity(),
581            ));
582        }
583        Ok(_ModEql(node.span()))
584    }
585}
586#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
587pub struct _Amp {
588    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
589}
590#[doc(hidden)]
591#[allow(non_snake_case)]
592pub fn _Amp<S: ::m2_syn::Spanned>(span: S) -> _Amp {
593    let span = span.span();
594    _Amp {
595        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("&", span))),
596    }
597}
598impl ::m2_syn::Token for _Amp {
599    const SPELLING: &'static str = "&";
600    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
601        match token {
602            ::m2_syn::TokenTree::Punct(token) => token.text() == "&",
603            _ => false,
604        }
605    }
606    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
607        Self::matches_token_tree(&token).then_some(Self {
608            raw: ::std::boxed::Box::new(token),
609        })
610    }
611}
612impl ::m2_syn::Parse for _Amp {
613    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
614        input.parse_token()
615    }
616}
617impl ::m2_syn::ToTokens for _Amp {
618    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
619        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
620    }
621}
622impl ::m2_syn::PrettyTree for _Amp {
623    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
624        ::m2_syn::PrettyNode::token(
625            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
626            <Self as ::m2_syn::Token>::SPELLING,
627            ::m2_syn::Spanned::span(self),
628        )
629    }
630}
631impl<N> ::m2_syn::Reconstruct<N> for _Amp
632where
633    N: ::m2_syn::ExternalCstNode,
634{
635    fn matches(node: &N) -> bool {
636        node.identity().matches("&", false)
637    }
638    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
639        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
640            return Err(::m2_syn::ReconstructError::wrong_node(
641                "&",
642                false,
643                node.identity(),
644            ));
645        }
646        Ok(_Amp(node.span()))
647    }
648}
649#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
650pub struct _AmpEql {
651    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
652}
653#[doc(hidden)]
654#[allow(non_snake_case)]
655pub fn _AmpEql<S: ::m2_syn::Spanned>(span: S) -> _AmpEql {
656    let span = span.span();
657    _AmpEql {
658        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("&=", span))),
659    }
660}
661impl ::m2_syn::Token for _AmpEql {
662    const SPELLING: &'static str = "&=";
663    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
664        match token {
665            ::m2_syn::TokenTree::Punct(token) => token.text() == "&=",
666            _ => false,
667        }
668    }
669    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
670        Self::matches_token_tree(&token).then_some(Self {
671            raw: ::std::boxed::Box::new(token),
672        })
673    }
674}
675impl ::m2_syn::Parse for _AmpEql {
676    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
677        input.parse_token()
678    }
679}
680impl ::m2_syn::ToTokens for _AmpEql {
681    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
682        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
683    }
684}
685impl ::m2_syn::PrettyTree for _AmpEql {
686    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
687        ::m2_syn::PrettyNode::token(
688            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
689            <Self as ::m2_syn::Token>::SPELLING,
690            ::m2_syn::Spanned::span(self),
691        )
692    }
693}
694impl<N> ::m2_syn::Reconstruct<N> for _AmpEql
695where
696    N: ::m2_syn::ExternalCstNode,
697{
698    fn matches(node: &N) -> bool {
699        node.identity().matches("&=", false)
700    }
701    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
702        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
703            return Err(::m2_syn::ReconstructError::wrong_node(
704                "&=",
705                false,
706                node.identity(),
707            ));
708        }
709        Ok(_AmpEql(node.span()))
710    }
711}
712#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
713pub struct _Mul {
714    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
715}
716#[doc(hidden)]
717#[allow(non_snake_case)]
718pub fn _Mul<S: ::m2_syn::Spanned>(span: S) -> _Mul {
719    let span = span.span();
720    _Mul {
721        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("*", span))),
722    }
723}
724impl ::m2_syn::Token for _Mul {
725    const SPELLING: &'static str = "*";
726    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
727        match token {
728            ::m2_syn::TokenTree::Punct(token) => token.text() == "*",
729            _ => false,
730        }
731    }
732    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
733        Self::matches_token_tree(&token).then_some(Self {
734            raw: ::std::boxed::Box::new(token),
735        })
736    }
737}
738impl ::m2_syn::Parse for _Mul {
739    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
740        input.parse_token()
741    }
742}
743impl ::m2_syn::ToTokens for _Mul {
744    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
745        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
746    }
747}
748impl ::m2_syn::PrettyTree for _Mul {
749    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
750        ::m2_syn::PrettyNode::token(
751            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
752            <Self as ::m2_syn::Token>::SPELLING,
753            ::m2_syn::Spanned::span(self),
754        )
755    }
756}
757impl<N> ::m2_syn::Reconstruct<N> for _Mul
758where
759    N: ::m2_syn::ExternalCstNode,
760{
761    fn matches(node: &N) -> bool {
762        node.identity().matches("*", false)
763    }
764    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
765        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
766            return Err(::m2_syn::ReconstructError::wrong_node(
767                "*",
768                false,
769                node.identity(),
770            ));
771        }
772        Ok(_Mul(node.span()))
773    }
774}
775#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
776pub struct _MulEql {
777    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
778}
779#[doc(hidden)]
780#[allow(non_snake_case)]
781pub fn _MulEql<S: ::m2_syn::Spanned>(span: S) -> _MulEql {
782    let span = span.span();
783    _MulEql {
784        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("*=", span))),
785    }
786}
787impl ::m2_syn::Token for _MulEql {
788    const SPELLING: &'static str = "*=";
789    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
790        match token {
791            ::m2_syn::TokenTree::Punct(token) => token.text() == "*=",
792            _ => false,
793        }
794    }
795    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
796        Self::matches_token_tree(&token).then_some(Self {
797            raw: ::std::boxed::Box::new(token),
798        })
799    }
800}
801impl ::m2_syn::Parse for _MulEql {
802    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
803        input.parse_token()
804    }
805}
806impl ::m2_syn::ToTokens for _MulEql {
807    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
808        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
809    }
810}
811impl ::m2_syn::PrettyTree for _MulEql {
812    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
813        ::m2_syn::PrettyNode::token(
814            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
815            <Self as ::m2_syn::Token>::SPELLING,
816            ::m2_syn::Spanned::span(self),
817        )
818    }
819}
820impl<N> ::m2_syn::Reconstruct<N> for _MulEql
821where
822    N: ::m2_syn::ExternalCstNode,
823{
824    fn matches(node: &N) -> bool {
825        node.identity().matches("*=", false)
826    }
827    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
828        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
829            return Err(::m2_syn::ReconstructError::wrong_node(
830                "*=",
831                false,
832                node.identity(),
833            ));
834        }
835        Ok(_MulEql(node.span()))
836    }
837}
838#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
839pub struct _MulMul {
840    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
841}
842#[doc(hidden)]
843#[allow(non_snake_case)]
844pub fn _MulMul<S: ::m2_syn::Spanned>(span: S) -> _MulMul {
845    let span = span.span();
846    _MulMul {
847        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("**", span))),
848    }
849}
850impl ::m2_syn::Token for _MulMul {
851    const SPELLING: &'static str = "**";
852    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
853        match token {
854            ::m2_syn::TokenTree::Punct(token) => token.text() == "**",
855            _ => false,
856        }
857    }
858    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
859        Self::matches_token_tree(&token).then_some(Self {
860            raw: ::std::boxed::Box::new(token),
861        })
862    }
863}
864impl ::m2_syn::Parse for _MulMul {
865    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
866        input.parse_token()
867    }
868}
869impl ::m2_syn::ToTokens for _MulMul {
870    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
871        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
872    }
873}
874impl ::m2_syn::PrettyTree for _MulMul {
875    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
876        ::m2_syn::PrettyNode::token(
877            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
878            <Self as ::m2_syn::Token>::SPELLING,
879            ::m2_syn::Spanned::span(self),
880        )
881    }
882}
883impl<N> ::m2_syn::Reconstruct<N> for _MulMul
884where
885    N: ::m2_syn::ExternalCstNode,
886{
887    fn matches(node: &N) -> bool {
888        node.identity().matches("**", false)
889    }
890    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
891        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
892            return Err(::m2_syn::ReconstructError::wrong_node(
893                "**",
894                false,
895                node.identity(),
896            ));
897        }
898        Ok(_MulMul(node.span()))
899    }
900}
901#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
902pub struct _MulMulEql {
903    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
904}
905#[doc(hidden)]
906#[allow(non_snake_case)]
907pub fn _MulMulEql<S: ::m2_syn::Spanned>(span: S) -> _MulMulEql {
908    let span = span.span();
909    _MulMulEql {
910        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
911            "**=", span,
912        ))),
913    }
914}
915impl ::m2_syn::Token for _MulMulEql {
916    const SPELLING: &'static str = "**=";
917    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
918        match token {
919            ::m2_syn::TokenTree::Punct(token) => token.text() == "**=",
920            _ => false,
921        }
922    }
923    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
924        Self::matches_token_tree(&token).then_some(Self {
925            raw: ::std::boxed::Box::new(token),
926        })
927    }
928}
929impl ::m2_syn::Parse for _MulMulEql {
930    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
931        input.parse_token()
932    }
933}
934impl ::m2_syn::ToTokens for _MulMulEql {
935    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
936        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
937    }
938}
939impl ::m2_syn::PrettyTree for _MulMulEql {
940    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
941        ::m2_syn::PrettyNode::token(
942            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
943            <Self as ::m2_syn::Token>::SPELLING,
944            ::m2_syn::Spanned::span(self),
945        )
946    }
947}
948impl<N> ::m2_syn::Reconstruct<N> for _MulMulEql
949where
950    N: ::m2_syn::ExternalCstNode,
951{
952    fn matches(node: &N) -> bool {
953        node.identity().matches("**=", false)
954    }
955    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
956        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
957            return Err(::m2_syn::ReconstructError::wrong_node(
958                "**=",
959                false,
960                node.identity(),
961            ));
962        }
963        Ok(_MulMulEql(node.span()))
964    }
965}
966#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
967pub struct _Add {
968    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
969}
970#[doc(hidden)]
971#[allow(non_snake_case)]
972pub fn _Add<S: ::m2_syn::Spanned>(span: S) -> _Add {
973    let span = span.span();
974    _Add {
975        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("+", span))),
976    }
977}
978impl ::m2_syn::Token for _Add {
979    const SPELLING: &'static str = "+";
980    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
981        match token {
982            ::m2_syn::TokenTree::Punct(token) => token.text() == "+",
983            _ => false,
984        }
985    }
986    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
987        Self::matches_token_tree(&token).then_some(Self {
988            raw: ::std::boxed::Box::new(token),
989        })
990    }
991}
992impl ::m2_syn::Parse for _Add {
993    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
994        input.parse_token()
995    }
996}
997impl ::m2_syn::ToTokens for _Add {
998    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
999        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1000    }
1001}
1002impl ::m2_syn::PrettyTree for _Add {
1003    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1004        ::m2_syn::PrettyNode::token(
1005            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1006            <Self as ::m2_syn::Token>::SPELLING,
1007            ::m2_syn::Spanned::span(self),
1008        )
1009    }
1010}
1011impl<N> ::m2_syn::Reconstruct<N> for _Add
1012where
1013    N: ::m2_syn::ExternalCstNode,
1014{
1015    fn matches(node: &N) -> bool {
1016        node.identity().matches("+", false)
1017    }
1018    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1019        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1020            return Err(::m2_syn::ReconstructError::wrong_node(
1021                "+",
1022                false,
1023                node.identity(),
1024            ));
1025        }
1026        Ok(_Add(node.span()))
1027    }
1028}
1029#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1030pub struct _AddEql {
1031    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1032}
1033#[doc(hidden)]
1034#[allow(non_snake_case)]
1035pub fn _AddEql<S: ::m2_syn::Spanned>(span: S) -> _AddEql {
1036    let span = span.span();
1037    _AddEql {
1038        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("+=", span))),
1039    }
1040}
1041impl ::m2_syn::Token for _AddEql {
1042    const SPELLING: &'static str = "+=";
1043    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1044        match token {
1045            ::m2_syn::TokenTree::Punct(token) => token.text() == "+=",
1046            _ => false,
1047        }
1048    }
1049    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
1050        Self::matches_token_tree(&token).then_some(Self {
1051            raw: ::std::boxed::Box::new(token),
1052        })
1053    }
1054}
1055impl ::m2_syn::Parse for _AddEql {
1056    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
1057        input.parse_token()
1058    }
1059}
1060impl ::m2_syn::ToTokens for _AddEql {
1061    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
1062        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1063    }
1064}
1065impl ::m2_syn::PrettyTree for _AddEql {
1066    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1067        ::m2_syn::PrettyNode::token(
1068            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1069            <Self as ::m2_syn::Token>::SPELLING,
1070            ::m2_syn::Spanned::span(self),
1071        )
1072    }
1073}
1074impl<N> ::m2_syn::Reconstruct<N> for _AddEql
1075where
1076    N: ::m2_syn::ExternalCstNode,
1077{
1078    fn matches(node: &N) -> bool {
1079        node.identity().matches("+=", false)
1080    }
1081    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1082        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1083            return Err(::m2_syn::ReconstructError::wrong_node(
1084                "+=",
1085                false,
1086                node.identity(),
1087            ));
1088        }
1089        Ok(_AddEql(node.span()))
1090    }
1091}
1092#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1093pub struct _AddAdd {
1094    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1095}
1096#[doc(hidden)]
1097#[allow(non_snake_case)]
1098pub fn _AddAdd<S: ::m2_syn::Spanned>(span: S) -> _AddAdd {
1099    let span = span.span();
1100    _AddAdd {
1101        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("++", span))),
1102    }
1103}
1104impl ::m2_syn::Token for _AddAdd {
1105    const SPELLING: &'static str = "++";
1106    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1107        match token {
1108            ::m2_syn::TokenTree::Punct(token) => token.text() == "++",
1109            _ => false,
1110        }
1111    }
1112    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
1113        Self::matches_token_tree(&token).then_some(Self {
1114            raw: ::std::boxed::Box::new(token),
1115        })
1116    }
1117}
1118impl ::m2_syn::Parse for _AddAdd {
1119    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
1120        input.parse_token()
1121    }
1122}
1123impl ::m2_syn::ToTokens for _AddAdd {
1124    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
1125        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1126    }
1127}
1128impl ::m2_syn::PrettyTree for _AddAdd {
1129    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1130        ::m2_syn::PrettyNode::token(
1131            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1132            <Self as ::m2_syn::Token>::SPELLING,
1133            ::m2_syn::Spanned::span(self),
1134        )
1135    }
1136}
1137impl<N> ::m2_syn::Reconstruct<N> for _AddAdd
1138where
1139    N: ::m2_syn::ExternalCstNode,
1140{
1141    fn matches(node: &N) -> bool {
1142        node.identity().matches("++", false)
1143    }
1144    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1145        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1146            return Err(::m2_syn::ReconstructError::wrong_node(
1147                "++",
1148                false,
1149                node.identity(),
1150            ));
1151        }
1152        Ok(_AddAdd(node.span()))
1153    }
1154}
1155#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1156pub struct _AddAddEql {
1157    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1158}
1159#[doc(hidden)]
1160#[allow(non_snake_case)]
1161pub fn _AddAddEql<S: ::m2_syn::Spanned>(span: S) -> _AddAddEql {
1162    let span = span.span();
1163    _AddAddEql {
1164        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
1165            "++=", span,
1166        ))),
1167    }
1168}
1169impl ::m2_syn::Token for _AddAddEql {
1170    const SPELLING: &'static str = "++=";
1171    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1172        match token {
1173            ::m2_syn::TokenTree::Punct(token) => token.text() == "++=",
1174            _ => false,
1175        }
1176    }
1177    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
1178        Self::matches_token_tree(&token).then_some(Self {
1179            raw: ::std::boxed::Box::new(token),
1180        })
1181    }
1182}
1183impl ::m2_syn::Parse for _AddAddEql {
1184    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
1185        input.parse_token()
1186    }
1187}
1188impl ::m2_syn::ToTokens for _AddAddEql {
1189    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
1190        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1191    }
1192}
1193impl ::m2_syn::PrettyTree for _AddAddEql {
1194    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1195        ::m2_syn::PrettyNode::token(
1196            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1197            <Self as ::m2_syn::Token>::SPELLING,
1198            ::m2_syn::Spanned::span(self),
1199        )
1200    }
1201}
1202impl<N> ::m2_syn::Reconstruct<N> for _AddAddEql
1203where
1204    N: ::m2_syn::ExternalCstNode,
1205{
1206    fn matches(node: &N) -> bool {
1207        node.identity().matches("++=", false)
1208    }
1209    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1210        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1211            return Err(::m2_syn::ReconstructError::wrong_node(
1212                "++=",
1213                false,
1214                node.identity(),
1215            ));
1216        }
1217        Ok(_AddAddEql(node.span()))
1218    }
1219}
1220#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1221pub struct _Sub {
1222    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1223}
1224#[doc(hidden)]
1225#[allow(non_snake_case)]
1226pub fn _Sub<S: ::m2_syn::Spanned>(span: S) -> _Sub {
1227    let span = span.span();
1228    _Sub {
1229        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("-", span))),
1230    }
1231}
1232impl ::m2_syn::Token for _Sub {
1233    const SPELLING: &'static str = "-";
1234    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1235        match token {
1236            ::m2_syn::TokenTree::Punct(token) => token.text() == "-",
1237            _ => false,
1238        }
1239    }
1240    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
1241        Self::matches_token_tree(&token).then_some(Self {
1242            raw: ::std::boxed::Box::new(token),
1243        })
1244    }
1245}
1246impl ::m2_syn::Parse for _Sub {
1247    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
1248        input.parse_token()
1249    }
1250}
1251impl ::m2_syn::ToTokens for _Sub {
1252    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
1253        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1254    }
1255}
1256impl ::m2_syn::PrettyTree for _Sub {
1257    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1258        ::m2_syn::PrettyNode::token(
1259            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1260            <Self as ::m2_syn::Token>::SPELLING,
1261            ::m2_syn::Spanned::span(self),
1262        )
1263    }
1264}
1265impl<N> ::m2_syn::Reconstruct<N> for _Sub
1266where
1267    N: ::m2_syn::ExternalCstNode,
1268{
1269    fn matches(node: &N) -> bool {
1270        node.identity().matches("-", false)
1271    }
1272    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1273        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1274            return Err(::m2_syn::ReconstructError::wrong_node(
1275                "-",
1276                false,
1277                node.identity(),
1278            ));
1279        }
1280        Ok(_Sub(node.span()))
1281    }
1282}
1283#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1284pub struct _SubEql {
1285    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1286}
1287#[doc(hidden)]
1288#[allow(non_snake_case)]
1289pub fn _SubEql<S: ::m2_syn::Spanned>(span: S) -> _SubEql {
1290    let span = span.span();
1291    _SubEql {
1292        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("-=", span))),
1293    }
1294}
1295impl ::m2_syn::Token for _SubEql {
1296    const SPELLING: &'static str = "-=";
1297    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1298        match token {
1299            ::m2_syn::TokenTree::Punct(token) => token.text() == "-=",
1300            _ => false,
1301        }
1302    }
1303    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
1304        Self::matches_token_tree(&token).then_some(Self {
1305            raw: ::std::boxed::Box::new(token),
1306        })
1307    }
1308}
1309impl ::m2_syn::Parse for _SubEql {
1310    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
1311        input.parse_token()
1312    }
1313}
1314impl ::m2_syn::ToTokens for _SubEql {
1315    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
1316        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1317    }
1318}
1319impl ::m2_syn::PrettyTree for _SubEql {
1320    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1321        ::m2_syn::PrettyNode::token(
1322            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1323            <Self as ::m2_syn::Token>::SPELLING,
1324            ::m2_syn::Spanned::span(self),
1325        )
1326    }
1327}
1328impl<N> ::m2_syn::Reconstruct<N> for _SubEql
1329where
1330    N: ::m2_syn::ExternalCstNode,
1331{
1332    fn matches(node: &N) -> bool {
1333        node.identity().matches("-=", false)
1334    }
1335    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1336        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1337            return Err(::m2_syn::ReconstructError::wrong_node(
1338                "-=",
1339                false,
1340                node.identity(),
1341            ));
1342        }
1343        Ok(_SubEql(node.span()))
1344    }
1345}
1346#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1347pub struct _SubGst {
1348    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1349}
1350#[doc(hidden)]
1351#[allow(non_snake_case)]
1352pub fn _SubGst<S: ::m2_syn::Spanned>(span: S) -> _SubGst {
1353    let span = span.span();
1354    _SubGst {
1355        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("->", span))),
1356    }
1357}
1358impl ::m2_syn::Token for _SubGst {
1359    const SPELLING: &'static str = "->";
1360    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1361        match token {
1362            ::m2_syn::TokenTree::Punct(token) => token.text() == "->",
1363            _ => false,
1364        }
1365    }
1366    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
1367        Self::matches_token_tree(&token).then_some(Self {
1368            raw: ::std::boxed::Box::new(token),
1369        })
1370    }
1371}
1372impl ::m2_syn::Parse for _SubGst {
1373    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
1374        input.parse_token()
1375    }
1376}
1377impl ::m2_syn::ToTokens for _SubGst {
1378    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
1379        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1380    }
1381}
1382impl ::m2_syn::PrettyTree for _SubGst {
1383    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1384        ::m2_syn::PrettyNode::token(
1385            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1386            <Self as ::m2_syn::Token>::SPELLING,
1387            ::m2_syn::Spanned::span(self),
1388        )
1389    }
1390}
1391impl<N> ::m2_syn::Reconstruct<N> for _SubGst
1392where
1393    N: ::m2_syn::ExternalCstNode,
1394{
1395    fn matches(node: &N) -> bool {
1396        node.identity().matches("->", false)
1397    }
1398    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1399        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1400            return Err(::m2_syn::ReconstructError::wrong_node(
1401                "->",
1402                false,
1403                node.identity(),
1404            ));
1405        }
1406        Ok(_SubGst(node.span()))
1407    }
1408}
1409#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1410pub struct _Dot {
1411    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1412}
1413#[doc(hidden)]
1414#[allow(non_snake_case)]
1415pub fn _Dot<S: ::m2_syn::Spanned>(span: S) -> _Dot {
1416    let span = span.span();
1417    _Dot {
1418        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(".", span))),
1419    }
1420}
1421impl ::m2_syn::Token for _Dot {
1422    const SPELLING: &'static str = ".";
1423    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1424        match token {
1425            ::m2_syn::TokenTree::Punct(token) => token.text() == ".",
1426            _ => false,
1427        }
1428    }
1429    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
1430        Self::matches_token_tree(&token).then_some(Self {
1431            raw: ::std::boxed::Box::new(token),
1432        })
1433    }
1434}
1435impl ::m2_syn::Parse for _Dot {
1436    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
1437        input.parse_token()
1438    }
1439}
1440impl ::m2_syn::ToTokens for _Dot {
1441    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
1442        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1443    }
1444}
1445impl ::m2_syn::PrettyTree for _Dot {
1446    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1447        ::m2_syn::PrettyNode::token(
1448            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1449            <Self as ::m2_syn::Token>::SPELLING,
1450            ::m2_syn::Spanned::span(self),
1451        )
1452    }
1453}
1454impl<N> ::m2_syn::Reconstruct<N> for _Dot
1455where
1456    N: ::m2_syn::ExternalCstNode,
1457{
1458    fn matches(node: &N) -> bool {
1459        node.identity().matches(".", false)
1460    }
1461    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1462        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1463            return Err(::m2_syn::ReconstructError::wrong_node(
1464                ".",
1465                false,
1466                node.identity(),
1467            ));
1468        }
1469        Ok(_Dot(node.span()))
1470    }
1471}
1472#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1473pub struct _DotDot {
1474    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1475}
1476#[doc(hidden)]
1477#[allow(non_snake_case)]
1478pub fn _DotDot<S: ::m2_syn::Spanned>(span: S) -> _DotDot {
1479    let span = span.span();
1480    _DotDot {
1481        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("..", span))),
1482    }
1483}
1484impl ::m2_syn::Token for _DotDot {
1485    const SPELLING: &'static str = "..";
1486    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1487        match token {
1488            ::m2_syn::TokenTree::Punct(token) => token.text() == "..",
1489            _ => false,
1490        }
1491    }
1492    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
1493        Self::matches_token_tree(&token).then_some(Self {
1494            raw: ::std::boxed::Box::new(token),
1495        })
1496    }
1497}
1498impl ::m2_syn::Parse for _DotDot {
1499    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
1500        input.parse_token()
1501    }
1502}
1503impl ::m2_syn::ToTokens for _DotDot {
1504    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
1505        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1506    }
1507}
1508impl ::m2_syn::PrettyTree for _DotDot {
1509    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1510        ::m2_syn::PrettyNode::token(
1511            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1512            <Self as ::m2_syn::Token>::SPELLING,
1513            ::m2_syn::Spanned::span(self),
1514        )
1515    }
1516}
1517impl<N> ::m2_syn::Reconstruct<N> for _DotDot
1518where
1519    N: ::m2_syn::ExternalCstNode,
1520{
1521    fn matches(node: &N) -> bool {
1522        node.identity().matches("..", false)
1523    }
1524    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1525        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1526            return Err(::m2_syn::ReconstructError::wrong_node(
1527                "..",
1528                false,
1529                node.identity(),
1530            ));
1531        }
1532        Ok(_DotDot(node.span()))
1533    }
1534}
1535#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1536pub struct _DotDotEql {
1537    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1538}
1539#[doc(hidden)]
1540#[allow(non_snake_case)]
1541pub fn _DotDotEql<S: ::m2_syn::Spanned>(span: S) -> _DotDotEql {
1542    let span = span.span();
1543    _DotDotEql {
1544        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
1545            "..=", span,
1546        ))),
1547    }
1548}
1549impl ::m2_syn::Token for _DotDotEql {
1550    const SPELLING: &'static str = "..=";
1551    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1552        match token {
1553            ::m2_syn::TokenTree::Punct(token) => token.text() == "..=",
1554            _ => false,
1555        }
1556    }
1557    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
1558        Self::matches_token_tree(&token).then_some(Self {
1559            raw: ::std::boxed::Box::new(token),
1560        })
1561    }
1562}
1563impl ::m2_syn::Parse for _DotDotEql {
1564    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
1565        input.parse_token()
1566    }
1567}
1568impl ::m2_syn::ToTokens for _DotDotEql {
1569    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
1570        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1571    }
1572}
1573impl ::m2_syn::PrettyTree for _DotDotEql {
1574    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1575        ::m2_syn::PrettyNode::token(
1576            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1577            <Self as ::m2_syn::Token>::SPELLING,
1578            ::m2_syn::Spanned::span(self),
1579        )
1580    }
1581}
1582impl<N> ::m2_syn::Reconstruct<N> for _DotDotEql
1583where
1584    N: ::m2_syn::ExternalCstNode,
1585{
1586    fn matches(node: &N) -> bool {
1587        node.identity().matches("..=", false)
1588    }
1589    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1590        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1591            return Err(::m2_syn::ReconstructError::wrong_node(
1592                "..=",
1593                false,
1594                node.identity(),
1595            ));
1596        }
1597        Ok(_DotDotEql(node.span()))
1598    }
1599}
1600#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1601pub struct _DotDotLst {
1602    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1603}
1604#[doc(hidden)]
1605#[allow(non_snake_case)]
1606pub fn _DotDotLst<S: ::m2_syn::Spanned>(span: S) -> _DotDotLst {
1607    let span = span.span();
1608    _DotDotLst {
1609        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
1610            "..<", span,
1611        ))),
1612    }
1613}
1614impl ::m2_syn::Token for _DotDotLst {
1615    const SPELLING: &'static str = "..<";
1616    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1617        match token {
1618            ::m2_syn::TokenTree::Punct(token) => token.text() == "..<",
1619            _ => false,
1620        }
1621    }
1622    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
1623        Self::matches_token_tree(&token).then_some(Self {
1624            raw: ::std::boxed::Box::new(token),
1625        })
1626    }
1627}
1628impl ::m2_syn::Parse for _DotDotLst {
1629    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
1630        input.parse_token()
1631    }
1632}
1633impl ::m2_syn::ToTokens for _DotDotLst {
1634    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
1635        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1636    }
1637}
1638impl ::m2_syn::PrettyTree for _DotDotLst {
1639    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1640        ::m2_syn::PrettyNode::token(
1641            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1642            <Self as ::m2_syn::Token>::SPELLING,
1643            ::m2_syn::Spanned::span(self),
1644        )
1645    }
1646}
1647impl<N> ::m2_syn::Reconstruct<N> for _DotDotLst
1648where
1649    N: ::m2_syn::ExternalCstNode,
1650{
1651    fn matches(node: &N) -> bool {
1652        node.identity().matches("..<", false)
1653    }
1654    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1655        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1656            return Err(::m2_syn::ReconstructError::wrong_node(
1657                "..<",
1658                false,
1659                node.identity(),
1660            ));
1661        }
1662        Ok(_DotDotLst(node.span()))
1663    }
1664}
1665#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1666pub struct _DotDotLstEql {
1667    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1668}
1669#[doc(hidden)]
1670#[allow(non_snake_case)]
1671pub fn _DotDotLstEql<S: ::m2_syn::Spanned>(span: S) -> _DotDotLstEql {
1672    let span = span.span();
1673    _DotDotLstEql {
1674        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
1675            "..<=", span,
1676        ))),
1677    }
1678}
1679impl ::m2_syn::Token for _DotDotLstEql {
1680    const SPELLING: &'static str = "..<=";
1681    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1682        match token {
1683            ::m2_syn::TokenTree::Punct(token) => token.text() == "..<=",
1684            _ => false,
1685        }
1686    }
1687    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
1688        Self::matches_token_tree(&token).then_some(Self {
1689            raw: ::std::boxed::Box::new(token),
1690        })
1691    }
1692}
1693impl ::m2_syn::Parse for _DotDotLstEql {
1694    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
1695        input.parse_token()
1696    }
1697}
1698impl ::m2_syn::ToTokens for _DotDotLstEql {
1699    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
1700        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1701    }
1702}
1703impl ::m2_syn::PrettyTree for _DotDotLstEql {
1704    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1705        ::m2_syn::PrettyNode::token(
1706            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1707            <Self as ::m2_syn::Token>::SPELLING,
1708            ::m2_syn::Spanned::span(self),
1709        )
1710    }
1711}
1712impl<N> ::m2_syn::Reconstruct<N> for _DotDotLstEql
1713where
1714    N: ::m2_syn::ExternalCstNode,
1715{
1716    fn matches(node: &N) -> bool {
1717        node.identity().matches("..<=", false)
1718    }
1719    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1720        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1721            return Err(::m2_syn::ReconstructError::wrong_node(
1722                "..<=",
1723                false,
1724                node.identity(),
1725            ));
1726        }
1727        Ok(_DotDotLstEql(node.span()))
1728    }
1729}
1730#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1731pub struct _DotQsm {
1732    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1733}
1734#[doc(hidden)]
1735#[allow(non_snake_case)]
1736pub fn _DotQsm<S: ::m2_syn::Spanned>(span: S) -> _DotQsm {
1737    let span = span.span();
1738    _DotQsm {
1739        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(".?", span))),
1740    }
1741}
1742impl ::m2_syn::Token for _DotQsm {
1743    const SPELLING: &'static str = ".?";
1744    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1745        match token {
1746            ::m2_syn::TokenTree::Punct(token) => token.text() == ".?",
1747            _ => false,
1748        }
1749    }
1750    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
1751        Self::matches_token_tree(&token).then_some(Self {
1752            raw: ::std::boxed::Box::new(token),
1753        })
1754    }
1755}
1756impl ::m2_syn::Parse for _DotQsm {
1757    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
1758        input.parse_token()
1759    }
1760}
1761impl ::m2_syn::ToTokens for _DotQsm {
1762    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
1763        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1764    }
1765}
1766impl ::m2_syn::PrettyTree for _DotQsm {
1767    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1768        ::m2_syn::PrettyNode::token(
1769            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1770            <Self as ::m2_syn::Token>::SPELLING,
1771            ::m2_syn::Spanned::span(self),
1772        )
1773    }
1774}
1775impl<N> ::m2_syn::Reconstruct<N> for _DotQsm
1776where
1777    N: ::m2_syn::ExternalCstNode,
1778{
1779    fn matches(node: &N) -> bool {
1780        node.identity().matches(".?", false)
1781    }
1782    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1783        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1784            return Err(::m2_syn::ReconstructError::wrong_node(
1785                ".?",
1786                false,
1787                node.identity(),
1788            ));
1789        }
1790        Ok(_DotQsm(node.span()))
1791    }
1792}
1793#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1794pub struct _Slh {
1795    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1796}
1797#[doc(hidden)]
1798#[allow(non_snake_case)]
1799pub fn _Slh<S: ::m2_syn::Spanned>(span: S) -> _Slh {
1800    let span = span.span();
1801    _Slh {
1802        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("/", span))),
1803    }
1804}
1805impl ::m2_syn::Token for _Slh {
1806    const SPELLING: &'static str = "/";
1807    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1808        match token {
1809            ::m2_syn::TokenTree::Punct(token) => token.text() == "/",
1810            _ => false,
1811        }
1812    }
1813    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
1814        Self::matches_token_tree(&token).then_some(Self {
1815            raw: ::std::boxed::Box::new(token),
1816        })
1817    }
1818}
1819impl ::m2_syn::Parse for _Slh {
1820    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
1821        input.parse_token()
1822    }
1823}
1824impl ::m2_syn::ToTokens for _Slh {
1825    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
1826        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1827    }
1828}
1829impl ::m2_syn::PrettyTree for _Slh {
1830    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1831        ::m2_syn::PrettyNode::token(
1832            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1833            <Self as ::m2_syn::Token>::SPELLING,
1834            ::m2_syn::Spanned::span(self),
1835        )
1836    }
1837}
1838impl<N> ::m2_syn::Reconstruct<N> for _Slh
1839where
1840    N: ::m2_syn::ExternalCstNode,
1841{
1842    fn matches(node: &N) -> bool {
1843        node.identity().matches("/", false)
1844    }
1845    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1846        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1847            return Err(::m2_syn::ReconstructError::wrong_node(
1848                "/",
1849                false,
1850                node.identity(),
1851            ));
1852        }
1853        Ok(_Slh(node.span()))
1854    }
1855}
1856#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1857pub struct _SlhEql {
1858    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1859}
1860#[doc(hidden)]
1861#[allow(non_snake_case)]
1862pub fn _SlhEql<S: ::m2_syn::Spanned>(span: S) -> _SlhEql {
1863    let span = span.span();
1864    _SlhEql {
1865        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("/=", span))),
1866    }
1867}
1868impl ::m2_syn::Token for _SlhEql {
1869    const SPELLING: &'static str = "/=";
1870    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1871        match token {
1872            ::m2_syn::TokenTree::Punct(token) => token.text() == "/=",
1873            _ => false,
1874        }
1875    }
1876    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
1877        Self::matches_token_tree(&token).then_some(Self {
1878            raw: ::std::boxed::Box::new(token),
1879        })
1880    }
1881}
1882impl ::m2_syn::Parse for _SlhEql {
1883    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
1884        input.parse_token()
1885    }
1886}
1887impl ::m2_syn::ToTokens for _SlhEql {
1888    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
1889        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1890    }
1891}
1892impl ::m2_syn::PrettyTree for _SlhEql {
1893    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1894        ::m2_syn::PrettyNode::token(
1895            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1896            <Self as ::m2_syn::Token>::SPELLING,
1897            ::m2_syn::Spanned::span(self),
1898        )
1899    }
1900}
1901impl<N> ::m2_syn::Reconstruct<N> for _SlhEql
1902where
1903    N: ::m2_syn::ExternalCstNode,
1904{
1905    fn matches(node: &N) -> bool {
1906        node.identity().matches("/=", false)
1907    }
1908    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1909        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1910            return Err(::m2_syn::ReconstructError::wrong_node(
1911                "/=",
1912                false,
1913                node.identity(),
1914            ));
1915        }
1916        Ok(_SlhEql(node.span()))
1917    }
1918}
1919#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1920pub struct _SlhSlh {
1921    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1922}
1923#[doc(hidden)]
1924#[allow(non_snake_case)]
1925pub fn _SlhSlh<S: ::m2_syn::Spanned>(span: S) -> _SlhSlh {
1926    let span = span.span();
1927    _SlhSlh {
1928        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("//", span))),
1929    }
1930}
1931impl ::m2_syn::Token for _SlhSlh {
1932    const SPELLING: &'static str = "//";
1933    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1934        match token {
1935            ::m2_syn::TokenTree::Punct(token) => token.text() == "//",
1936            _ => false,
1937        }
1938    }
1939    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
1940        Self::matches_token_tree(&token).then_some(Self {
1941            raw: ::std::boxed::Box::new(token),
1942        })
1943    }
1944}
1945impl ::m2_syn::Parse for _SlhSlh {
1946    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
1947        input.parse_token()
1948    }
1949}
1950impl ::m2_syn::ToTokens for _SlhSlh {
1951    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
1952        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
1953    }
1954}
1955impl ::m2_syn::PrettyTree for _SlhSlh {
1956    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
1957        ::m2_syn::PrettyNode::token(
1958            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
1959            <Self as ::m2_syn::Token>::SPELLING,
1960            ::m2_syn::Spanned::span(self),
1961        )
1962    }
1963}
1964impl<N> ::m2_syn::Reconstruct<N> for _SlhSlh
1965where
1966    N: ::m2_syn::ExternalCstNode,
1967{
1968    fn matches(node: &N) -> bool {
1969        node.identity().matches("//", false)
1970    }
1971    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
1972        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
1973            return Err(::m2_syn::ReconstructError::wrong_node(
1974                "//",
1975                false,
1976                node.identity(),
1977            ));
1978        }
1979        Ok(_SlhSlh(node.span()))
1980    }
1981}
1982#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
1983pub struct _SlhSlhEql {
1984    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
1985}
1986#[doc(hidden)]
1987#[allow(non_snake_case)]
1988pub fn _SlhSlhEql<S: ::m2_syn::Spanned>(span: S) -> _SlhSlhEql {
1989    let span = span.span();
1990    _SlhSlhEql {
1991        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
1992            "//=", span,
1993        ))),
1994    }
1995}
1996impl ::m2_syn::Token for _SlhSlhEql {
1997    const SPELLING: &'static str = "//=";
1998    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
1999        match token {
2000            ::m2_syn::TokenTree::Punct(token) => token.text() == "//=",
2001            _ => false,
2002        }
2003    }
2004    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2005        Self::matches_token_tree(&token).then_some(Self {
2006            raw: ::std::boxed::Box::new(token),
2007        })
2008    }
2009}
2010impl ::m2_syn::Parse for _SlhSlhEql {
2011    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2012        input.parse_token()
2013    }
2014}
2015impl ::m2_syn::ToTokens for _SlhSlhEql {
2016    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2017        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2018    }
2019}
2020impl ::m2_syn::PrettyTree for _SlhSlhEql {
2021    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2022        ::m2_syn::PrettyNode::token(
2023            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2024            <Self as ::m2_syn::Token>::SPELLING,
2025            ::m2_syn::Spanned::span(self),
2026        )
2027    }
2028}
2029impl<N> ::m2_syn::Reconstruct<N> for _SlhSlhEql
2030where
2031    N: ::m2_syn::ExternalCstNode,
2032{
2033    fn matches(node: &N) -> bool {
2034        node.identity().matches("//=", false)
2035    }
2036    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2037        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2038            return Err(::m2_syn::ReconstructError::wrong_node(
2039                "//=",
2040                false,
2041                node.identity(),
2042            ));
2043        }
2044        Ok(_SlhSlhEql(node.span()))
2045    }
2046}
2047#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
2048pub struct _Col {
2049    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
2050}
2051#[doc(hidden)]
2052#[allow(non_snake_case)]
2053pub fn _Col<S: ::m2_syn::Spanned>(span: S) -> _Col {
2054    let span = span.span();
2055    _Col {
2056        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(":", span))),
2057    }
2058}
2059impl ::m2_syn::Token for _Col {
2060    const SPELLING: &'static str = ":";
2061    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
2062        match token {
2063            ::m2_syn::TokenTree::Punct(token) => token.text() == ":",
2064            _ => false,
2065        }
2066    }
2067    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2068        Self::matches_token_tree(&token).then_some(Self {
2069            raw: ::std::boxed::Box::new(token),
2070        })
2071    }
2072}
2073impl ::m2_syn::Parse for _Col {
2074    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2075        input.parse_token()
2076    }
2077}
2078impl ::m2_syn::ToTokens for _Col {
2079    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2080        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2081    }
2082}
2083impl ::m2_syn::PrettyTree for _Col {
2084    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2085        ::m2_syn::PrettyNode::token(
2086            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2087            <Self as ::m2_syn::Token>::SPELLING,
2088            ::m2_syn::Spanned::span(self),
2089        )
2090    }
2091}
2092impl<N> ::m2_syn::Reconstruct<N> for _Col
2093where
2094    N: ::m2_syn::ExternalCstNode,
2095{
2096    fn matches(node: &N) -> bool {
2097        node.identity().matches(":", false)
2098    }
2099    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2100        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2101            return Err(::m2_syn::ReconstructError::wrong_node(
2102                ":",
2103                false,
2104                node.identity(),
2105            ));
2106        }
2107        Ok(_Col(node.span()))
2108    }
2109}
2110#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
2111pub struct _ColEql {
2112    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
2113}
2114#[doc(hidden)]
2115#[allow(non_snake_case)]
2116pub fn _ColEql<S: ::m2_syn::Spanned>(span: S) -> _ColEql {
2117    let span = span.span();
2118    _ColEql {
2119        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(":=", span))),
2120    }
2121}
2122impl ::m2_syn::Token for _ColEql {
2123    const SPELLING: &'static str = ":=";
2124    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
2125        match token {
2126            ::m2_syn::TokenTree::Punct(token) => token.text() == ":=",
2127            _ => false,
2128        }
2129    }
2130    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2131        Self::matches_token_tree(&token).then_some(Self {
2132            raw: ::std::boxed::Box::new(token),
2133        })
2134    }
2135}
2136impl ::m2_syn::Parse for _ColEql {
2137    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2138        input.parse_token()
2139    }
2140}
2141impl ::m2_syn::ToTokens for _ColEql {
2142    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2143        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2144    }
2145}
2146impl ::m2_syn::PrettyTree for _ColEql {
2147    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2148        ::m2_syn::PrettyNode::token(
2149            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2150            <Self as ::m2_syn::Token>::SPELLING,
2151            ::m2_syn::Spanned::span(self),
2152        )
2153    }
2154}
2155impl<N> ::m2_syn::Reconstruct<N> for _ColEql
2156where
2157    N: ::m2_syn::ExternalCstNode,
2158{
2159    fn matches(node: &N) -> bool {
2160        node.identity().matches(":=", false)
2161    }
2162    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2163        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2164            return Err(::m2_syn::ReconstructError::wrong_node(
2165                ":=",
2166                false,
2167                node.identity(),
2168            ));
2169        }
2170        Ok(_ColEql(node.span()))
2171    }
2172}
2173#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
2174pub struct _Lst {
2175    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
2176}
2177#[doc(hidden)]
2178#[allow(non_snake_case)]
2179pub fn _Lst<S: ::m2_syn::Spanned>(span: S) -> _Lst {
2180    let span = span.span();
2181    _Lst {
2182        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("<", span))),
2183    }
2184}
2185impl ::m2_syn::Token for _Lst {
2186    const SPELLING: &'static str = "<";
2187    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
2188        match token {
2189            ::m2_syn::TokenTree::Punct(token) => token.text() == "<",
2190            _ => false,
2191        }
2192    }
2193    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2194        Self::matches_token_tree(&token).then_some(Self {
2195            raw: ::std::boxed::Box::new(token),
2196        })
2197    }
2198}
2199impl ::m2_syn::Parse for _Lst {
2200    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2201        input.parse_token()
2202    }
2203}
2204impl ::m2_syn::ToTokens for _Lst {
2205    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2206        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2207    }
2208}
2209impl ::m2_syn::PrettyTree for _Lst {
2210    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2211        ::m2_syn::PrettyNode::token(
2212            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2213            <Self as ::m2_syn::Token>::SPELLING,
2214            ::m2_syn::Spanned::span(self),
2215        )
2216    }
2217}
2218impl<N> ::m2_syn::Reconstruct<N> for _Lst
2219where
2220    N: ::m2_syn::ExternalCstNode,
2221{
2222    fn matches(node: &N) -> bool {
2223        node.identity().matches("<", false)
2224    }
2225    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2226        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2227            return Err(::m2_syn::ReconstructError::wrong_node(
2228                "<",
2229                false,
2230                node.identity(),
2231            ));
2232        }
2233        Ok(_Lst(node.span()))
2234    }
2235}
2236#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
2237pub struct _LstSub {
2238    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
2239}
2240#[doc(hidden)]
2241#[allow(non_snake_case)]
2242pub fn _LstSub<S: ::m2_syn::Spanned>(span: S) -> _LstSub {
2243    let span = span.span();
2244    _LstSub {
2245        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("<-", span))),
2246    }
2247}
2248impl ::m2_syn::Token for _LstSub {
2249    const SPELLING: &'static str = "<-";
2250    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
2251        match token {
2252            ::m2_syn::TokenTree::Punct(token) => token.text() == "<-",
2253            _ => false,
2254        }
2255    }
2256    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2257        Self::matches_token_tree(&token).then_some(Self {
2258            raw: ::std::boxed::Box::new(token),
2259        })
2260    }
2261}
2262impl ::m2_syn::Parse for _LstSub {
2263    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2264        input.parse_token()
2265    }
2266}
2267impl ::m2_syn::ToTokens for _LstSub {
2268    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2269        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2270    }
2271}
2272impl ::m2_syn::PrettyTree for _LstSub {
2273    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2274        ::m2_syn::PrettyNode::token(
2275            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2276            <Self as ::m2_syn::Token>::SPELLING,
2277            ::m2_syn::Spanned::span(self),
2278        )
2279    }
2280}
2281impl<N> ::m2_syn::Reconstruct<N> for _LstSub
2282where
2283    N: ::m2_syn::ExternalCstNode,
2284{
2285    fn matches(node: &N) -> bool {
2286        node.identity().matches("<-", false)
2287    }
2288    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2289        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2290            return Err(::m2_syn::ReconstructError::wrong_node(
2291                "<-",
2292                false,
2293                node.identity(),
2294            ));
2295        }
2296        Ok(_LstSub(node.span()))
2297    }
2298}
2299#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
2300pub struct _LstLst {
2301    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
2302}
2303#[doc(hidden)]
2304#[allow(non_snake_case)]
2305pub fn _LstLst<S: ::m2_syn::Spanned>(span: S) -> _LstLst {
2306    let span = span.span();
2307    _LstLst {
2308        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("<<", span))),
2309    }
2310}
2311impl ::m2_syn::Token for _LstLst {
2312    const SPELLING: &'static str = "<<";
2313    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
2314        match token {
2315            ::m2_syn::TokenTree::Punct(token) => token.text() == "<<",
2316            _ => false,
2317        }
2318    }
2319    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2320        Self::matches_token_tree(&token).then_some(Self {
2321            raw: ::std::boxed::Box::new(token),
2322        })
2323    }
2324}
2325impl ::m2_syn::Parse for _LstLst {
2326    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2327        input.parse_token()
2328    }
2329}
2330impl ::m2_syn::ToTokens for _LstLst {
2331    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2332        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2333    }
2334}
2335impl ::m2_syn::PrettyTree for _LstLst {
2336    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2337        ::m2_syn::PrettyNode::token(
2338            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2339            <Self as ::m2_syn::Token>::SPELLING,
2340            ::m2_syn::Spanned::span(self),
2341        )
2342    }
2343}
2344impl<N> ::m2_syn::Reconstruct<N> for _LstLst
2345where
2346    N: ::m2_syn::ExternalCstNode,
2347{
2348    fn matches(node: &N) -> bool {
2349        node.identity().matches("<<", false)
2350    }
2351    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2352        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2353            return Err(::m2_syn::ReconstructError::wrong_node(
2354                "<<",
2355                false,
2356                node.identity(),
2357            ));
2358        }
2359        Ok(_LstLst(node.span()))
2360    }
2361}
2362#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
2363pub struct _LstLstEql {
2364    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
2365}
2366#[doc(hidden)]
2367#[allow(non_snake_case)]
2368pub fn _LstLstEql<S: ::m2_syn::Spanned>(span: S) -> _LstLstEql {
2369    let span = span.span();
2370    _LstLstEql {
2371        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
2372            "<<=", span,
2373        ))),
2374    }
2375}
2376impl ::m2_syn::Token for _LstLstEql {
2377    const SPELLING: &'static str = "<<=";
2378    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
2379        match token {
2380            ::m2_syn::TokenTree::Punct(token) => token.text() == "<<=",
2381            _ => false,
2382        }
2383    }
2384    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2385        Self::matches_token_tree(&token).then_some(Self {
2386            raw: ::std::boxed::Box::new(token),
2387        })
2388    }
2389}
2390impl ::m2_syn::Parse for _LstLstEql {
2391    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2392        input.parse_token()
2393    }
2394}
2395impl ::m2_syn::ToTokens for _LstLstEql {
2396    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2397        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2398    }
2399}
2400impl ::m2_syn::PrettyTree for _LstLstEql {
2401    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2402        ::m2_syn::PrettyNode::token(
2403            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2404            <Self as ::m2_syn::Token>::SPELLING,
2405            ::m2_syn::Spanned::span(self),
2406        )
2407    }
2408}
2409impl<N> ::m2_syn::Reconstruct<N> for _LstLstEql
2410where
2411    N: ::m2_syn::ExternalCstNode,
2412{
2413    fn matches(node: &N) -> bool {
2414        node.identity().matches("<<=", false)
2415    }
2416    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2417        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2418            return Err(::m2_syn::ReconstructError::wrong_node(
2419                "<<=",
2420                false,
2421                node.identity(),
2422            ));
2423        }
2424        Ok(_LstLstEql(node.span()))
2425    }
2426}
2427#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
2428pub struct _LstEql {
2429    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
2430}
2431#[doc(hidden)]
2432#[allow(non_snake_case)]
2433pub fn _LstEql<S: ::m2_syn::Spanned>(span: S) -> _LstEql {
2434    let span = span.span();
2435    _LstEql {
2436        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("<=", span))),
2437    }
2438}
2439impl ::m2_syn::Token for _LstEql {
2440    const SPELLING: &'static str = "<=";
2441    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
2442        match token {
2443            ::m2_syn::TokenTree::Punct(token) => token.text() == "<=",
2444            _ => false,
2445        }
2446    }
2447    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2448        Self::matches_token_tree(&token).then_some(Self {
2449            raw: ::std::boxed::Box::new(token),
2450        })
2451    }
2452}
2453impl ::m2_syn::Parse for _LstEql {
2454    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2455        input.parse_token()
2456    }
2457}
2458impl ::m2_syn::ToTokens for _LstEql {
2459    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2460        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2461    }
2462}
2463impl ::m2_syn::PrettyTree for _LstEql {
2464    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2465        ::m2_syn::PrettyNode::token(
2466            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2467            <Self as ::m2_syn::Token>::SPELLING,
2468            ::m2_syn::Spanned::span(self),
2469        )
2470    }
2471}
2472impl<N> ::m2_syn::Reconstruct<N> for _LstEql
2473where
2474    N: ::m2_syn::ExternalCstNode,
2475{
2476    fn matches(node: &N) -> bool {
2477        node.identity().matches("<=", false)
2478    }
2479    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2480        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2481            return Err(::m2_syn::ReconstructError::wrong_node(
2482                "<=",
2483                false,
2484                node.identity(),
2485            ));
2486        }
2487        Ok(_LstEql(node.span()))
2488    }
2489}
2490#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
2491pub struct _LstEqlEql {
2492    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
2493}
2494#[doc(hidden)]
2495#[allow(non_snake_case)]
2496pub fn _LstEqlEql<S: ::m2_syn::Spanned>(span: S) -> _LstEqlEql {
2497    let span = span.span();
2498    _LstEqlEql {
2499        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
2500            "<==", span,
2501        ))),
2502    }
2503}
2504impl ::m2_syn::Token for _LstEqlEql {
2505    const SPELLING: &'static str = "<==";
2506    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
2507        match token {
2508            ::m2_syn::TokenTree::Punct(token) => token.text() == "<==",
2509            _ => false,
2510        }
2511    }
2512    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2513        Self::matches_token_tree(&token).then_some(Self {
2514            raw: ::std::boxed::Box::new(token),
2515        })
2516    }
2517}
2518impl ::m2_syn::Parse for _LstEqlEql {
2519    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2520        input.parse_token()
2521    }
2522}
2523impl ::m2_syn::ToTokens for _LstEqlEql {
2524    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2525        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2526    }
2527}
2528impl ::m2_syn::PrettyTree for _LstEqlEql {
2529    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2530        ::m2_syn::PrettyNode::token(
2531            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2532            <Self as ::m2_syn::Token>::SPELLING,
2533            ::m2_syn::Spanned::span(self),
2534        )
2535    }
2536}
2537impl<N> ::m2_syn::Reconstruct<N> for _LstEqlEql
2538where
2539    N: ::m2_syn::ExternalCstNode,
2540{
2541    fn matches(node: &N) -> bool {
2542        node.identity().matches("<==", false)
2543    }
2544    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2545        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2546            return Err(::m2_syn::ReconstructError::wrong_node(
2547                "<==",
2548                false,
2549                node.identity(),
2550            ));
2551        }
2552        Ok(_LstEqlEql(node.span()))
2553    }
2554}
2555#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
2556pub struct _LstEqlEqlEql {
2557    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
2558}
2559#[doc(hidden)]
2560#[allow(non_snake_case)]
2561pub fn _LstEqlEqlEql<S: ::m2_syn::Spanned>(span: S) -> _LstEqlEqlEql {
2562    let span = span.span();
2563    _LstEqlEqlEql {
2564        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
2565            "<===", span,
2566        ))),
2567    }
2568}
2569impl ::m2_syn::Token for _LstEqlEqlEql {
2570    const SPELLING: &'static str = "<===";
2571    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
2572        match token {
2573            ::m2_syn::TokenTree::Punct(token) => token.text() == "<===",
2574            _ => false,
2575        }
2576    }
2577    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2578        Self::matches_token_tree(&token).then_some(Self {
2579            raw: ::std::boxed::Box::new(token),
2580        })
2581    }
2582}
2583impl ::m2_syn::Parse for _LstEqlEqlEql {
2584    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2585        input.parse_token()
2586    }
2587}
2588impl ::m2_syn::ToTokens for _LstEqlEqlEql {
2589    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2590        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2591    }
2592}
2593impl ::m2_syn::PrettyTree for _LstEqlEqlEql {
2594    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2595        ::m2_syn::PrettyNode::token(
2596            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2597            <Self as ::m2_syn::Token>::SPELLING,
2598            ::m2_syn::Spanned::span(self),
2599        )
2600    }
2601}
2602impl<N> ::m2_syn::Reconstruct<N> for _LstEqlEqlEql
2603where
2604    N: ::m2_syn::ExternalCstNode,
2605{
2606    fn matches(node: &N) -> bool {
2607        node.identity().matches("<===", false)
2608    }
2609    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2610        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2611            return Err(::m2_syn::ReconstructError::wrong_node(
2612                "<===",
2613                false,
2614                node.identity(),
2615            ));
2616        }
2617        Ok(_LstEqlEqlEql(node.span()))
2618    }
2619}
2620#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
2621pub struct _LstEqlEqlGst {
2622    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
2623}
2624#[doc(hidden)]
2625#[allow(non_snake_case)]
2626pub fn _LstEqlEqlGst<S: ::m2_syn::Spanned>(span: S) -> _LstEqlEqlGst {
2627    let span = span.span();
2628    _LstEqlEqlGst {
2629        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
2630            "<==>", span,
2631        ))),
2632    }
2633}
2634impl ::m2_syn::Token for _LstEqlEqlGst {
2635    const SPELLING: &'static str = "<==>";
2636    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
2637        match token {
2638            ::m2_syn::TokenTree::Punct(token) => token.text() == "<==>",
2639            _ => false,
2640        }
2641    }
2642    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2643        Self::matches_token_tree(&token).then_some(Self {
2644            raw: ::std::boxed::Box::new(token),
2645        })
2646    }
2647}
2648impl ::m2_syn::Parse for _LstEqlEqlGst {
2649    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2650        input.parse_token()
2651    }
2652}
2653impl ::m2_syn::ToTokens for _LstEqlEqlGst {
2654    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2655        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2656    }
2657}
2658impl ::m2_syn::PrettyTree for _LstEqlEqlGst {
2659    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2660        ::m2_syn::PrettyNode::token(
2661            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2662            <Self as ::m2_syn::Token>::SPELLING,
2663            ::m2_syn::Spanned::span(self),
2664        )
2665    }
2666}
2667impl<N> ::m2_syn::Reconstruct<N> for _LstEqlEqlGst
2668where
2669    N: ::m2_syn::ExternalCstNode,
2670{
2671    fn matches(node: &N) -> bool {
2672        node.identity().matches("<==>", false)
2673    }
2674    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2675        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2676            return Err(::m2_syn::ReconstructError::wrong_node(
2677                "<==>",
2678                false,
2679                node.identity(),
2680            ));
2681        }
2682        Ok(_LstEqlEqlGst(node.span()))
2683    }
2684}
2685#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
2686pub struct _LstEqlEqlGstEql {
2687    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
2688}
2689#[doc(hidden)]
2690#[allow(non_snake_case)]
2691pub fn _LstEqlEqlGstEql<S: ::m2_syn::Spanned>(span: S) -> _LstEqlEqlGstEql {
2692    let span = span.span();
2693    _LstEqlEqlGstEql {
2694        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
2695            "<==>=", span,
2696        ))),
2697    }
2698}
2699impl ::m2_syn::Token for _LstEqlEqlGstEql {
2700    const SPELLING: &'static str = "<==>=";
2701    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
2702        match token {
2703            ::m2_syn::TokenTree::Punct(token) => token.text() == "<==>=",
2704            _ => false,
2705        }
2706    }
2707    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2708        Self::matches_token_tree(&token).then_some(Self {
2709            raw: ::std::boxed::Box::new(token),
2710        })
2711    }
2712}
2713impl ::m2_syn::Parse for _LstEqlEqlGstEql {
2714    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2715        input.parse_token()
2716    }
2717}
2718impl ::m2_syn::ToTokens for _LstEqlEqlGstEql {
2719    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2720        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2721    }
2722}
2723impl ::m2_syn::PrettyTree for _LstEqlEqlGstEql {
2724    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2725        ::m2_syn::PrettyNode::token(
2726            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2727            <Self as ::m2_syn::Token>::SPELLING,
2728            ::m2_syn::Spanned::span(self),
2729        )
2730    }
2731}
2732impl<N> ::m2_syn::Reconstruct<N> for _LstEqlEqlGstEql
2733where
2734    N: ::m2_syn::ExternalCstNode,
2735{
2736    fn matches(node: &N) -> bool {
2737        node.identity().matches("<==>=", false)
2738    }
2739    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2740        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2741            return Err(::m2_syn::ReconstructError::wrong_node(
2742                "<==>=",
2743                false,
2744                node.identity(),
2745            ));
2746        }
2747        Ok(_LstEqlEqlGstEql(node.span()))
2748    }
2749}
2750#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
2751pub struct _Eql {
2752    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
2753}
2754#[doc(hidden)]
2755#[allow(non_snake_case)]
2756pub fn _Eql<S: ::m2_syn::Spanned>(span: S) -> _Eql {
2757    let span = span.span();
2758    _Eql {
2759        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("=", span))),
2760    }
2761}
2762impl ::m2_syn::Token for _Eql {
2763    const SPELLING: &'static str = "=";
2764    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
2765        match token {
2766            ::m2_syn::TokenTree::Punct(token) => token.text() == "=",
2767            _ => false,
2768        }
2769    }
2770    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2771        Self::matches_token_tree(&token).then_some(Self {
2772            raw: ::std::boxed::Box::new(token),
2773        })
2774    }
2775}
2776impl ::m2_syn::Parse for _Eql {
2777    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2778        input.parse_token()
2779    }
2780}
2781impl ::m2_syn::ToTokens for _Eql {
2782    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2783        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2784    }
2785}
2786impl ::m2_syn::PrettyTree for _Eql {
2787    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2788        ::m2_syn::PrettyNode::token(
2789            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2790            <Self as ::m2_syn::Token>::SPELLING,
2791            ::m2_syn::Spanned::span(self),
2792        )
2793    }
2794}
2795impl<N> ::m2_syn::Reconstruct<N> for _Eql
2796where
2797    N: ::m2_syn::ExternalCstNode,
2798{
2799    fn matches(node: &N) -> bool {
2800        node.identity().matches("=", false)
2801    }
2802    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2803        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2804            return Err(::m2_syn::ReconstructError::wrong_node(
2805                "=",
2806                false,
2807                node.identity(),
2808            ));
2809        }
2810        Ok(_Eql(node.span()))
2811    }
2812}
2813#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
2814pub struct _EqlBngEql {
2815    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
2816}
2817#[doc(hidden)]
2818#[allow(non_snake_case)]
2819pub fn _EqlBngEql<S: ::m2_syn::Spanned>(span: S) -> _EqlBngEql {
2820    let span = span.span();
2821    _EqlBngEql {
2822        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
2823            "=!=", span,
2824        ))),
2825    }
2826}
2827impl ::m2_syn::Token for _EqlBngEql {
2828    const SPELLING: &'static str = "=!=";
2829    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
2830        match token {
2831            ::m2_syn::TokenTree::Punct(token) => token.text() == "=!=",
2832            _ => false,
2833        }
2834    }
2835    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2836        Self::matches_token_tree(&token).then_some(Self {
2837            raw: ::std::boxed::Box::new(token),
2838        })
2839    }
2840}
2841impl ::m2_syn::Parse for _EqlBngEql {
2842    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2843        input.parse_token()
2844    }
2845}
2846impl ::m2_syn::ToTokens for _EqlBngEql {
2847    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2848        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2849    }
2850}
2851impl ::m2_syn::PrettyTree for _EqlBngEql {
2852    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2853        ::m2_syn::PrettyNode::token(
2854            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2855            <Self as ::m2_syn::Token>::SPELLING,
2856            ::m2_syn::Spanned::span(self),
2857        )
2858    }
2859}
2860impl<N> ::m2_syn::Reconstruct<N> for _EqlBngEql
2861where
2862    N: ::m2_syn::ExternalCstNode,
2863{
2864    fn matches(node: &N) -> bool {
2865        node.identity().matches("=!=", false)
2866    }
2867    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2868        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2869            return Err(::m2_syn::ReconstructError::wrong_node(
2870                "=!=",
2871                false,
2872                node.identity(),
2873            ));
2874        }
2875        Ok(_EqlBngEql(node.span()))
2876    }
2877}
2878#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
2879pub struct _EqlEql {
2880    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
2881}
2882#[doc(hidden)]
2883#[allow(non_snake_case)]
2884pub fn _EqlEql<S: ::m2_syn::Spanned>(span: S) -> _EqlEql {
2885    let span = span.span();
2886    _EqlEql {
2887        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("==", span))),
2888    }
2889}
2890impl ::m2_syn::Token for _EqlEql {
2891    const SPELLING: &'static str = "==";
2892    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
2893        match token {
2894            ::m2_syn::TokenTree::Punct(token) => token.text() == "==",
2895            _ => false,
2896        }
2897    }
2898    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2899        Self::matches_token_tree(&token).then_some(Self {
2900            raw: ::std::boxed::Box::new(token),
2901        })
2902    }
2903}
2904impl ::m2_syn::Parse for _EqlEql {
2905    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2906        input.parse_token()
2907    }
2908}
2909impl ::m2_syn::ToTokens for _EqlEql {
2910    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2911        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2912    }
2913}
2914impl ::m2_syn::PrettyTree for _EqlEql {
2915    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2916        ::m2_syn::PrettyNode::token(
2917            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2918            <Self as ::m2_syn::Token>::SPELLING,
2919            ::m2_syn::Spanned::span(self),
2920        )
2921    }
2922}
2923impl<N> ::m2_syn::Reconstruct<N> for _EqlEql
2924where
2925    N: ::m2_syn::ExternalCstNode,
2926{
2927    fn matches(node: &N) -> bool {
2928        node.identity().matches("==", false)
2929    }
2930    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2931        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2932            return Err(::m2_syn::ReconstructError::wrong_node(
2933                "==",
2934                false,
2935                node.identity(),
2936            ));
2937        }
2938        Ok(_EqlEql(node.span()))
2939    }
2940}
2941#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
2942pub struct _EqlEqlEql {
2943    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
2944}
2945#[doc(hidden)]
2946#[allow(non_snake_case)]
2947pub fn _EqlEqlEql<S: ::m2_syn::Spanned>(span: S) -> _EqlEqlEql {
2948    let span = span.span();
2949    _EqlEqlEql {
2950        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
2951            "===", span,
2952        ))),
2953    }
2954}
2955impl ::m2_syn::Token for _EqlEqlEql {
2956    const SPELLING: &'static str = "===";
2957    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
2958        match token {
2959            ::m2_syn::TokenTree::Punct(token) => token.text() == "===",
2960            _ => false,
2961        }
2962    }
2963    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
2964        Self::matches_token_tree(&token).then_some(Self {
2965            raw: ::std::boxed::Box::new(token),
2966        })
2967    }
2968}
2969impl ::m2_syn::Parse for _EqlEqlEql {
2970    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
2971        input.parse_token()
2972    }
2973}
2974impl ::m2_syn::ToTokens for _EqlEqlEql {
2975    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
2976        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
2977    }
2978}
2979impl ::m2_syn::PrettyTree for _EqlEqlEql {
2980    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
2981        ::m2_syn::PrettyNode::token(
2982            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
2983            <Self as ::m2_syn::Token>::SPELLING,
2984            ::m2_syn::Spanned::span(self),
2985        )
2986    }
2987}
2988impl<N> ::m2_syn::Reconstruct<N> for _EqlEqlEql
2989where
2990    N: ::m2_syn::ExternalCstNode,
2991{
2992    fn matches(node: &N) -> bool {
2993        node.identity().matches("===", false)
2994    }
2995    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
2996        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
2997            return Err(::m2_syn::ReconstructError::wrong_node(
2998                "===",
2999                false,
3000                node.identity(),
3001            ));
3002        }
3003        Ok(_EqlEqlEql(node.span()))
3004    }
3005}
3006#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3007pub struct _EqlEqlEqlGst {
3008    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3009}
3010#[doc(hidden)]
3011#[allow(non_snake_case)]
3012pub fn _EqlEqlEqlGst<S: ::m2_syn::Spanned>(span: S) -> _EqlEqlEqlGst {
3013    let span = span.span();
3014    _EqlEqlEqlGst {
3015        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
3016            "===>", span,
3017        ))),
3018    }
3019}
3020impl ::m2_syn::Token for _EqlEqlEqlGst {
3021    const SPELLING: &'static str = "===>";
3022    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3023        match token {
3024            ::m2_syn::TokenTree::Punct(token) => token.text() == "===>",
3025            _ => false,
3026        }
3027    }
3028    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3029        Self::matches_token_tree(&token).then_some(Self {
3030            raw: ::std::boxed::Box::new(token),
3031        })
3032    }
3033}
3034impl ::m2_syn::Parse for _EqlEqlEqlGst {
3035    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3036        input.parse_token()
3037    }
3038}
3039impl ::m2_syn::ToTokens for _EqlEqlEqlGst {
3040    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3041        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3042    }
3043}
3044impl ::m2_syn::PrettyTree for _EqlEqlEqlGst {
3045    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
3046        ::m2_syn::PrettyNode::token(
3047            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
3048            <Self as ::m2_syn::Token>::SPELLING,
3049            ::m2_syn::Spanned::span(self),
3050        )
3051    }
3052}
3053impl<N> ::m2_syn::Reconstruct<N> for _EqlEqlEqlGst
3054where
3055    N: ::m2_syn::ExternalCstNode,
3056{
3057    fn matches(node: &N) -> bool {
3058        node.identity().matches("===>", false)
3059    }
3060    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
3061        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
3062            return Err(::m2_syn::ReconstructError::wrong_node(
3063                "===>",
3064                false,
3065                node.identity(),
3066            ));
3067        }
3068        Ok(_EqlEqlEqlGst(node.span()))
3069    }
3070}
3071#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3072pub struct _EqlEqlEqlGstEql {
3073    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3074}
3075#[doc(hidden)]
3076#[allow(non_snake_case)]
3077pub fn _EqlEqlEqlGstEql<S: ::m2_syn::Spanned>(span: S) -> _EqlEqlEqlGstEql {
3078    let span = span.span();
3079    _EqlEqlEqlGstEql {
3080        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
3081            "===>=", span,
3082        ))),
3083    }
3084}
3085impl ::m2_syn::Token for _EqlEqlEqlGstEql {
3086    const SPELLING: &'static str = "===>=";
3087    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3088        match token {
3089            ::m2_syn::TokenTree::Punct(token) => token.text() == "===>=",
3090            _ => false,
3091        }
3092    }
3093    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3094        Self::matches_token_tree(&token).then_some(Self {
3095            raw: ::std::boxed::Box::new(token),
3096        })
3097    }
3098}
3099impl ::m2_syn::Parse for _EqlEqlEqlGstEql {
3100    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3101        input.parse_token()
3102    }
3103}
3104impl ::m2_syn::ToTokens for _EqlEqlEqlGstEql {
3105    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3106        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3107    }
3108}
3109impl ::m2_syn::PrettyTree for _EqlEqlEqlGstEql {
3110    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
3111        ::m2_syn::PrettyNode::token(
3112            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
3113            <Self as ::m2_syn::Token>::SPELLING,
3114            ::m2_syn::Spanned::span(self),
3115        )
3116    }
3117}
3118impl<N> ::m2_syn::Reconstruct<N> for _EqlEqlEqlGstEql
3119where
3120    N: ::m2_syn::ExternalCstNode,
3121{
3122    fn matches(node: &N) -> bool {
3123        node.identity().matches("===>=", false)
3124    }
3125    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
3126        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
3127            return Err(::m2_syn::ReconstructError::wrong_node(
3128                "===>=",
3129                false,
3130                node.identity(),
3131            ));
3132        }
3133        Ok(_EqlEqlEqlGstEql(node.span()))
3134    }
3135}
3136#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3137pub struct _EqlEqlGst {
3138    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3139}
3140#[doc(hidden)]
3141#[allow(non_snake_case)]
3142pub fn _EqlEqlGst<S: ::m2_syn::Spanned>(span: S) -> _EqlEqlGst {
3143    let span = span.span();
3144    _EqlEqlGst {
3145        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
3146            "==>", span,
3147        ))),
3148    }
3149}
3150impl ::m2_syn::Token for _EqlEqlGst {
3151    const SPELLING: &'static str = "==>";
3152    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3153        match token {
3154            ::m2_syn::TokenTree::Punct(token) => token.text() == "==>",
3155            _ => false,
3156        }
3157    }
3158    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3159        Self::matches_token_tree(&token).then_some(Self {
3160            raw: ::std::boxed::Box::new(token),
3161        })
3162    }
3163}
3164impl ::m2_syn::Parse for _EqlEqlGst {
3165    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3166        input.parse_token()
3167    }
3168}
3169impl ::m2_syn::ToTokens for _EqlEqlGst {
3170    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3171        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3172    }
3173}
3174impl ::m2_syn::PrettyTree for _EqlEqlGst {
3175    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
3176        ::m2_syn::PrettyNode::token(
3177            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
3178            <Self as ::m2_syn::Token>::SPELLING,
3179            ::m2_syn::Spanned::span(self),
3180        )
3181    }
3182}
3183impl<N> ::m2_syn::Reconstruct<N> for _EqlEqlGst
3184where
3185    N: ::m2_syn::ExternalCstNode,
3186{
3187    fn matches(node: &N) -> bool {
3188        node.identity().matches("==>", false)
3189    }
3190    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
3191        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
3192            return Err(::m2_syn::ReconstructError::wrong_node(
3193                "==>",
3194                false,
3195                node.identity(),
3196            ));
3197        }
3198        Ok(_EqlEqlGst(node.span()))
3199    }
3200}
3201#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3202pub struct _EqlEqlGstEql {
3203    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3204}
3205#[doc(hidden)]
3206#[allow(non_snake_case)]
3207pub fn _EqlEqlGstEql<S: ::m2_syn::Spanned>(span: S) -> _EqlEqlGstEql {
3208    let span = span.span();
3209    _EqlEqlGstEql {
3210        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
3211            "==>=", span,
3212        ))),
3213    }
3214}
3215impl ::m2_syn::Token for _EqlEqlGstEql {
3216    const SPELLING: &'static str = "==>=";
3217    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3218        match token {
3219            ::m2_syn::TokenTree::Punct(token) => token.text() == "==>=",
3220            _ => false,
3221        }
3222    }
3223    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3224        Self::matches_token_tree(&token).then_some(Self {
3225            raw: ::std::boxed::Box::new(token),
3226        })
3227    }
3228}
3229impl ::m2_syn::Parse for _EqlEqlGstEql {
3230    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3231        input.parse_token()
3232    }
3233}
3234impl ::m2_syn::ToTokens for _EqlEqlGstEql {
3235    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3236        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3237    }
3238}
3239impl ::m2_syn::PrettyTree for _EqlEqlGstEql {
3240    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
3241        ::m2_syn::PrettyNode::token(
3242            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
3243            <Self as ::m2_syn::Token>::SPELLING,
3244            ::m2_syn::Spanned::span(self),
3245        )
3246    }
3247}
3248impl<N> ::m2_syn::Reconstruct<N> for _EqlEqlGstEql
3249where
3250    N: ::m2_syn::ExternalCstNode,
3251{
3252    fn matches(node: &N) -> bool {
3253        node.identity().matches("==>=", false)
3254    }
3255    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
3256        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
3257            return Err(::m2_syn::ReconstructError::wrong_node(
3258                "==>=",
3259                false,
3260                node.identity(),
3261            ));
3262        }
3263        Ok(_EqlEqlGstEql(node.span()))
3264    }
3265}
3266#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3267pub struct _EqlGst {
3268    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3269}
3270#[doc(hidden)]
3271#[allow(non_snake_case)]
3272pub fn _EqlGst<S: ::m2_syn::Spanned>(span: S) -> _EqlGst {
3273    let span = span.span();
3274    _EqlGst {
3275        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("=>", span))),
3276    }
3277}
3278impl ::m2_syn::Token for _EqlGst {
3279    const SPELLING: &'static str = "=>";
3280    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3281        match token {
3282            ::m2_syn::TokenTree::Punct(token) => token.text() == "=>",
3283            _ => false,
3284        }
3285    }
3286    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3287        Self::matches_token_tree(&token).then_some(Self {
3288            raw: ::std::boxed::Box::new(token),
3289        })
3290    }
3291}
3292impl ::m2_syn::Parse for _EqlGst {
3293    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3294        input.parse_token()
3295    }
3296}
3297impl ::m2_syn::ToTokens for _EqlGst {
3298    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3299        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3300    }
3301}
3302impl ::m2_syn::PrettyTree for _EqlGst {
3303    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
3304        ::m2_syn::PrettyNode::token(
3305            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
3306            <Self as ::m2_syn::Token>::SPELLING,
3307            ::m2_syn::Spanned::span(self),
3308        )
3309    }
3310}
3311impl<N> ::m2_syn::Reconstruct<N> for _EqlGst
3312where
3313    N: ::m2_syn::ExternalCstNode,
3314{
3315    fn matches(node: &N) -> bool {
3316        node.identity().matches("=>", false)
3317    }
3318    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
3319        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
3320            return Err(::m2_syn::ReconstructError::wrong_node(
3321                "=>",
3322                false,
3323                node.identity(),
3324            ));
3325        }
3326        Ok(_EqlGst(node.span()))
3327    }
3328}
3329#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3330pub struct _Gst {
3331    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3332}
3333#[doc(hidden)]
3334#[allow(non_snake_case)]
3335pub fn _Gst<S: ::m2_syn::Spanned>(span: S) -> _Gst {
3336    let span = span.span();
3337    _Gst {
3338        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(">", span))),
3339    }
3340}
3341impl ::m2_syn::Token for _Gst {
3342    const SPELLING: &'static str = ">";
3343    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3344        match token {
3345            ::m2_syn::TokenTree::Punct(token) => token.text() == ">",
3346            _ => false,
3347        }
3348    }
3349    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3350        Self::matches_token_tree(&token).then_some(Self {
3351            raw: ::std::boxed::Box::new(token),
3352        })
3353    }
3354}
3355impl ::m2_syn::Parse for _Gst {
3356    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3357        input.parse_token()
3358    }
3359}
3360impl ::m2_syn::ToTokens for _Gst {
3361    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3362        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3363    }
3364}
3365impl ::m2_syn::PrettyTree for _Gst {
3366    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
3367        ::m2_syn::PrettyNode::token(
3368            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
3369            <Self as ::m2_syn::Token>::SPELLING,
3370            ::m2_syn::Spanned::span(self),
3371        )
3372    }
3373}
3374impl<N> ::m2_syn::Reconstruct<N> for _Gst
3375where
3376    N: ::m2_syn::ExternalCstNode,
3377{
3378    fn matches(node: &N) -> bool {
3379        node.identity().matches(">", false)
3380    }
3381    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
3382        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
3383            return Err(::m2_syn::ReconstructError::wrong_node(
3384                ">",
3385                false,
3386                node.identity(),
3387            ));
3388        }
3389        Ok(_Gst(node.span()))
3390    }
3391}
3392#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3393pub struct _GstEql {
3394    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3395}
3396#[doc(hidden)]
3397#[allow(non_snake_case)]
3398pub fn _GstEql<S: ::m2_syn::Spanned>(span: S) -> _GstEql {
3399    let span = span.span();
3400    _GstEql {
3401        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(">=", span))),
3402    }
3403}
3404impl ::m2_syn::Token for _GstEql {
3405    const SPELLING: &'static str = ">=";
3406    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3407        match token {
3408            ::m2_syn::TokenTree::Punct(token) => token.text() == ">=",
3409            _ => false,
3410        }
3411    }
3412    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3413        Self::matches_token_tree(&token).then_some(Self {
3414            raw: ::std::boxed::Box::new(token),
3415        })
3416    }
3417}
3418impl ::m2_syn::Parse for _GstEql {
3419    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3420        input.parse_token()
3421    }
3422}
3423impl ::m2_syn::ToTokens for _GstEql {
3424    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3425        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3426    }
3427}
3428impl ::m2_syn::PrettyTree for _GstEql {
3429    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
3430        ::m2_syn::PrettyNode::token(
3431            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
3432            <Self as ::m2_syn::Token>::SPELLING,
3433            ::m2_syn::Spanned::span(self),
3434        )
3435    }
3436}
3437impl<N> ::m2_syn::Reconstruct<N> for _GstEql
3438where
3439    N: ::m2_syn::ExternalCstNode,
3440{
3441    fn matches(node: &N) -> bool {
3442        node.identity().matches(">=", false)
3443    }
3444    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
3445        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
3446            return Err(::m2_syn::ReconstructError::wrong_node(
3447                ">=",
3448                false,
3449                node.identity(),
3450            ));
3451        }
3452        Ok(_GstEql(node.span()))
3453    }
3454}
3455#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3456pub struct _GstGst {
3457    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3458}
3459#[doc(hidden)]
3460#[allow(non_snake_case)]
3461pub fn _GstGst<S: ::m2_syn::Spanned>(span: S) -> _GstGst {
3462    let span = span.span();
3463    _GstGst {
3464        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(">>", span))),
3465    }
3466}
3467impl ::m2_syn::Token for _GstGst {
3468    const SPELLING: &'static str = ">>";
3469    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3470        match token {
3471            ::m2_syn::TokenTree::Punct(token) => token.text() == ">>",
3472            _ => false,
3473        }
3474    }
3475    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3476        Self::matches_token_tree(&token).then_some(Self {
3477            raw: ::std::boxed::Box::new(token),
3478        })
3479    }
3480}
3481impl ::m2_syn::Parse for _GstGst {
3482    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3483        input.parse_token()
3484    }
3485}
3486impl ::m2_syn::ToTokens for _GstGst {
3487    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3488        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3489    }
3490}
3491impl ::m2_syn::PrettyTree for _GstGst {
3492    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
3493        ::m2_syn::PrettyNode::token(
3494            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
3495            <Self as ::m2_syn::Token>::SPELLING,
3496            ::m2_syn::Spanned::span(self),
3497        )
3498    }
3499}
3500impl<N> ::m2_syn::Reconstruct<N> for _GstGst
3501where
3502    N: ::m2_syn::ExternalCstNode,
3503{
3504    fn matches(node: &N) -> bool {
3505        node.identity().matches(">>", false)
3506    }
3507    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
3508        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
3509            return Err(::m2_syn::ReconstructError::wrong_node(
3510                ">>",
3511                false,
3512                node.identity(),
3513            ));
3514        }
3515        Ok(_GstGst(node.span()))
3516    }
3517}
3518#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3519pub struct _GstGstEql {
3520    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3521}
3522#[doc(hidden)]
3523#[allow(non_snake_case)]
3524pub fn _GstGstEql<S: ::m2_syn::Spanned>(span: S) -> _GstGstEql {
3525    let span = span.span();
3526    _GstGstEql {
3527        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
3528            ">>=", span,
3529        ))),
3530    }
3531}
3532impl ::m2_syn::Token for _GstGstEql {
3533    const SPELLING: &'static str = ">>=";
3534    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3535        match token {
3536            ::m2_syn::TokenTree::Punct(token) => token.text() == ">>=",
3537            _ => false,
3538        }
3539    }
3540    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3541        Self::matches_token_tree(&token).then_some(Self {
3542            raw: ::std::boxed::Box::new(token),
3543        })
3544    }
3545}
3546impl ::m2_syn::Parse for _GstGstEql {
3547    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3548        input.parse_token()
3549    }
3550}
3551impl ::m2_syn::ToTokens for _GstGstEql {
3552    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3553        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3554    }
3555}
3556impl ::m2_syn::PrettyTree for _GstGstEql {
3557    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
3558        ::m2_syn::PrettyNode::token(
3559            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
3560            <Self as ::m2_syn::Token>::SPELLING,
3561            ::m2_syn::Spanned::span(self),
3562        )
3563    }
3564}
3565impl<N> ::m2_syn::Reconstruct<N> for _GstGstEql
3566where
3567    N: ::m2_syn::ExternalCstNode,
3568{
3569    fn matches(node: &N) -> bool {
3570        node.identity().matches(">>=", false)
3571    }
3572    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
3573        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
3574            return Err(::m2_syn::ReconstructError::wrong_node(
3575                ">>=",
3576                false,
3577                node.identity(),
3578            ));
3579        }
3580        Ok(_GstGstEql(node.span()))
3581    }
3582}
3583#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3584pub struct _Qsm {
3585    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3586}
3587#[doc(hidden)]
3588#[allow(non_snake_case)]
3589pub fn _Qsm<S: ::m2_syn::Spanned>(span: S) -> _Qsm {
3590    let span = span.span();
3591    _Qsm {
3592        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("?", span))),
3593    }
3594}
3595impl ::m2_syn::Token for _Qsm {
3596    const SPELLING: &'static str = "?";
3597    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3598        match token {
3599            ::m2_syn::TokenTree::Punct(token) => token.text() == "?",
3600            _ => false,
3601        }
3602    }
3603    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3604        Self::matches_token_tree(&token).then_some(Self {
3605            raw: ::std::boxed::Box::new(token),
3606        })
3607    }
3608}
3609impl ::m2_syn::Parse for _Qsm {
3610    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3611        input.parse_token()
3612    }
3613}
3614impl ::m2_syn::ToTokens for _Qsm {
3615    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3616        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3617    }
3618}
3619impl ::m2_syn::PrettyTree for _Qsm {
3620    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
3621        ::m2_syn::PrettyNode::token(
3622            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
3623            <Self as ::m2_syn::Token>::SPELLING,
3624            ::m2_syn::Spanned::span(self),
3625        )
3626    }
3627}
3628impl<N> ::m2_syn::Reconstruct<N> for _Qsm
3629where
3630    N: ::m2_syn::ExternalCstNode,
3631{
3632    fn matches(node: &N) -> bool {
3633        node.identity().matches("?", false)
3634    }
3635    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
3636        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
3637            return Err(::m2_syn::ReconstructError::wrong_node(
3638                "?",
3639                false,
3640                node.identity(),
3641            ));
3642        }
3643        Ok(_Qsm(node.span()))
3644    }
3645}
3646#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3647pub struct _QsmQsm {
3648    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3649}
3650#[doc(hidden)]
3651#[allow(non_snake_case)]
3652pub fn _QsmQsm<S: ::m2_syn::Spanned>(span: S) -> _QsmQsm {
3653    let span = span.span();
3654    _QsmQsm {
3655        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("??", span))),
3656    }
3657}
3658impl ::m2_syn::Token for _QsmQsm {
3659    const SPELLING: &'static str = "??";
3660    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3661        match token {
3662            ::m2_syn::TokenTree::Punct(token) => token.text() == "??",
3663            _ => false,
3664        }
3665    }
3666    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3667        Self::matches_token_tree(&token).then_some(Self {
3668            raw: ::std::boxed::Box::new(token),
3669        })
3670    }
3671}
3672impl ::m2_syn::Parse for _QsmQsm {
3673    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3674        input.parse_token()
3675    }
3676}
3677impl ::m2_syn::ToTokens for _QsmQsm {
3678    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3679        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3680    }
3681}
3682impl ::m2_syn::PrettyTree for _QsmQsm {
3683    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
3684        ::m2_syn::PrettyNode::token(
3685            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
3686            <Self as ::m2_syn::Token>::SPELLING,
3687            ::m2_syn::Spanned::span(self),
3688        )
3689    }
3690}
3691impl<N> ::m2_syn::Reconstruct<N> for _QsmQsm
3692where
3693    N: ::m2_syn::ExternalCstNode,
3694{
3695    fn matches(node: &N) -> bool {
3696        node.identity().matches("??", false)
3697    }
3698    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
3699        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
3700            return Err(::m2_syn::ReconstructError::wrong_node(
3701                "??",
3702                false,
3703                node.identity(),
3704            ));
3705        }
3706        Ok(_QsmQsm(node.span()))
3707    }
3708}
3709#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3710pub struct _QsmQsmEql {
3711    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3712}
3713#[doc(hidden)]
3714#[allow(non_snake_case)]
3715pub fn _QsmQsmEql<S: ::m2_syn::Spanned>(span: S) -> _QsmQsmEql {
3716    let span = span.span();
3717    _QsmQsmEql {
3718        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
3719            "??=", span,
3720        ))),
3721    }
3722}
3723impl ::m2_syn::Token for _QsmQsmEql {
3724    const SPELLING: &'static str = "??=";
3725    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3726        match token {
3727            ::m2_syn::TokenTree::Punct(token) => token.text() == "??=",
3728            _ => false,
3729        }
3730    }
3731    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3732        Self::matches_token_tree(&token).then_some(Self {
3733            raw: ::std::boxed::Box::new(token),
3734        })
3735    }
3736}
3737impl ::m2_syn::Parse for _QsmQsmEql {
3738    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3739        input.parse_token()
3740    }
3741}
3742impl ::m2_syn::ToTokens for _QsmQsmEql {
3743    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3744        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3745    }
3746}
3747impl ::m2_syn::PrettyTree for _QsmQsmEql {
3748    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
3749        ::m2_syn::PrettyNode::token(
3750            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
3751            <Self as ::m2_syn::Token>::SPELLING,
3752            ::m2_syn::Spanned::span(self),
3753        )
3754    }
3755}
3756impl<N> ::m2_syn::Reconstruct<N> for _QsmQsmEql
3757where
3758    N: ::m2_syn::ExternalCstNode,
3759{
3760    fn matches(node: &N) -> bool {
3761        node.identity().matches("??=", false)
3762    }
3763    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
3764        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
3765            return Err(::m2_syn::ReconstructError::wrong_node(
3766                "??=",
3767                false,
3768                node.identity(),
3769            ));
3770        }
3771        Ok(_QsmQsmEql(node.span()))
3772    }
3773}
3774#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3775pub struct _Att {
3776    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3777}
3778#[doc(hidden)]
3779#[allow(non_snake_case)]
3780pub fn _Att<S: ::m2_syn::Spanned>(span: S) -> _Att {
3781    let span = span.span();
3782    _Att {
3783        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("@", span))),
3784    }
3785}
3786impl ::m2_syn::Token for _Att {
3787    const SPELLING: &'static str = "@";
3788    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3789        match token {
3790            ::m2_syn::TokenTree::Punct(token) => token.text() == "@",
3791            _ => false,
3792        }
3793    }
3794    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3795        Self::matches_token_tree(&token).then_some(Self {
3796            raw: ::std::boxed::Box::new(token),
3797        })
3798    }
3799}
3800impl ::m2_syn::Parse for _Att {
3801    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3802        input.parse_token()
3803    }
3804}
3805impl ::m2_syn::ToTokens for _Att {
3806    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3807        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3808    }
3809}
3810impl ::m2_syn::PrettyTree for _Att {
3811    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
3812        ::m2_syn::PrettyNode::token(
3813            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
3814            <Self as ::m2_syn::Token>::SPELLING,
3815            ::m2_syn::Spanned::span(self),
3816        )
3817    }
3818}
3819impl<N> ::m2_syn::Reconstruct<N> for _Att
3820where
3821    N: ::m2_syn::ExternalCstNode,
3822{
3823    fn matches(node: &N) -> bool {
3824        node.identity().matches("@", false)
3825    }
3826    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
3827        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
3828            return Err(::m2_syn::ReconstructError::wrong_node(
3829                "@",
3830                false,
3831                node.identity(),
3832            ));
3833        }
3834        Ok(_Att(node.span()))
3835    }
3836}
3837#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3838pub struct _AttEql {
3839    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3840}
3841#[doc(hidden)]
3842#[allow(non_snake_case)]
3843pub fn _AttEql<S: ::m2_syn::Spanned>(span: S) -> _AttEql {
3844    let span = span.span();
3845    _AttEql {
3846        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("@=", span))),
3847    }
3848}
3849impl ::m2_syn::Token for _AttEql {
3850    const SPELLING: &'static str = "@=";
3851    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3852        match token {
3853            ::m2_syn::TokenTree::Punct(token) => token.text() == "@=",
3854            _ => false,
3855        }
3856    }
3857    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3858        Self::matches_token_tree(&token).then_some(Self {
3859            raw: ::std::boxed::Box::new(token),
3860        })
3861    }
3862}
3863impl ::m2_syn::Parse for _AttEql {
3864    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3865        input.parse_token()
3866    }
3867}
3868impl ::m2_syn::ToTokens for _AttEql {
3869    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3870        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3871    }
3872}
3873impl ::m2_syn::PrettyTree for _AttEql {
3874    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
3875        ::m2_syn::PrettyNode::token(
3876            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
3877            <Self as ::m2_syn::Token>::SPELLING,
3878            ::m2_syn::Spanned::span(self),
3879        )
3880    }
3881}
3882impl<N> ::m2_syn::Reconstruct<N> for _AttEql
3883where
3884    N: ::m2_syn::ExternalCstNode,
3885{
3886    fn matches(node: &N) -> bool {
3887        node.identity().matches("@=", false)
3888    }
3889    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
3890        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
3891            return Err(::m2_syn::ReconstructError::wrong_node(
3892                "@=",
3893                false,
3894                node.identity(),
3895            ));
3896        }
3897        Ok(_AttEql(node.span()))
3898    }
3899}
3900#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3901pub struct _AttAtt {
3902    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3903}
3904#[doc(hidden)]
3905#[allow(non_snake_case)]
3906pub fn _AttAtt<S: ::m2_syn::Spanned>(span: S) -> _AttAtt {
3907    let span = span.span();
3908    _AttAtt {
3909        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("@@", span))),
3910    }
3911}
3912impl ::m2_syn::Token for _AttAtt {
3913    const SPELLING: &'static str = "@@";
3914    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3915        match token {
3916            ::m2_syn::TokenTree::Punct(token) => token.text() == "@@",
3917            _ => false,
3918        }
3919    }
3920    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3921        Self::matches_token_tree(&token).then_some(Self {
3922            raw: ::std::boxed::Box::new(token),
3923        })
3924    }
3925}
3926impl ::m2_syn::Parse for _AttAtt {
3927    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3928        input.parse_token()
3929    }
3930}
3931impl ::m2_syn::ToTokens for _AttAtt {
3932    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3933        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3934    }
3935}
3936impl ::m2_syn::PrettyTree for _AttAtt {
3937    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
3938        ::m2_syn::PrettyNode::token(
3939            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
3940            <Self as ::m2_syn::Token>::SPELLING,
3941            ::m2_syn::Spanned::span(self),
3942        )
3943    }
3944}
3945impl<N> ::m2_syn::Reconstruct<N> for _AttAtt
3946where
3947    N: ::m2_syn::ExternalCstNode,
3948{
3949    fn matches(node: &N) -> bool {
3950        node.identity().matches("@@", false)
3951    }
3952    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
3953        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
3954            return Err(::m2_syn::ReconstructError::wrong_node(
3955                "@@",
3956                false,
3957                node.identity(),
3958            ));
3959        }
3960        Ok(_AttAtt(node.span()))
3961    }
3962}
3963#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
3964pub struct _AttAttEql {
3965    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
3966}
3967#[doc(hidden)]
3968#[allow(non_snake_case)]
3969pub fn _AttAttEql<S: ::m2_syn::Spanned>(span: S) -> _AttAttEql {
3970    let span = span.span();
3971    _AttAttEql {
3972        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
3973            "@@=", span,
3974        ))),
3975    }
3976}
3977impl ::m2_syn::Token for _AttAttEql {
3978    const SPELLING: &'static str = "@@=";
3979    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
3980        match token {
3981            ::m2_syn::TokenTree::Punct(token) => token.text() == "@@=",
3982            _ => false,
3983        }
3984    }
3985    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
3986        Self::matches_token_tree(&token).then_some(Self {
3987            raw: ::std::boxed::Box::new(token),
3988        })
3989    }
3990}
3991impl ::m2_syn::Parse for _AttAttEql {
3992    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
3993        input.parse_token()
3994    }
3995}
3996impl ::m2_syn::ToTokens for _AttAttEql {
3997    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
3998        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
3999    }
4000}
4001impl ::m2_syn::PrettyTree for _AttAttEql {
4002    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4003        ::m2_syn::PrettyNode::token(
4004            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4005            <Self as ::m2_syn::Token>::SPELLING,
4006            ::m2_syn::Spanned::span(self),
4007        )
4008    }
4009}
4010impl<N> ::m2_syn::Reconstruct<N> for _AttAttEql
4011where
4012    N: ::m2_syn::ExternalCstNode,
4013{
4014    fn matches(node: &N) -> bool {
4015        node.identity().matches("@@=", false)
4016    }
4017    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4018        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4019            return Err(::m2_syn::ReconstructError::wrong_node(
4020                "@@=",
4021                false,
4022                node.identity(),
4023            ));
4024        }
4025        Ok(_AttAttEql(node.span()))
4026    }
4027}
4028#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4029pub struct _AttAttQsm {
4030    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4031}
4032#[doc(hidden)]
4033#[allow(non_snake_case)]
4034pub fn _AttAttQsm<S: ::m2_syn::Spanned>(span: S) -> _AttAttQsm {
4035    let span = span.span();
4036    _AttAttQsm {
4037        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
4038            "@@?", span,
4039        ))),
4040    }
4041}
4042impl ::m2_syn::Token for _AttAttQsm {
4043    const SPELLING: &'static str = "@@?";
4044    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
4045        match token {
4046            ::m2_syn::TokenTree::Punct(token) => token.text() == "@@?",
4047            _ => false,
4048        }
4049    }
4050    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
4051        Self::matches_token_tree(&token).then_some(Self {
4052            raw: ::std::boxed::Box::new(token),
4053        })
4054    }
4055}
4056impl ::m2_syn::Parse for _AttAttQsm {
4057    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
4058        input.parse_token()
4059    }
4060}
4061impl ::m2_syn::ToTokens for _AttAttQsm {
4062    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
4063        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
4064    }
4065}
4066impl ::m2_syn::PrettyTree for _AttAttQsm {
4067    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4068        ::m2_syn::PrettyNode::token(
4069            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4070            <Self as ::m2_syn::Token>::SPELLING,
4071            ::m2_syn::Spanned::span(self),
4072        )
4073    }
4074}
4075impl<N> ::m2_syn::Reconstruct<N> for _AttAttQsm
4076where
4077    N: ::m2_syn::ExternalCstNode,
4078{
4079    fn matches(node: &N) -> bool {
4080        node.identity().matches("@@?", false)
4081    }
4082    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4083        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4084            return Err(::m2_syn::ReconstructError::wrong_node(
4085                "@@?",
4086                false,
4087                node.identity(),
4088            ));
4089        }
4090        Ok(_AttAttQsm(node.span()))
4091    }
4092}
4093#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4094pub struct _AttAttQsmEql {
4095    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4096}
4097#[doc(hidden)]
4098#[allow(non_snake_case)]
4099pub fn _AttAttQsmEql<S: ::m2_syn::Spanned>(span: S) -> _AttAttQsmEql {
4100    let span = span.span();
4101    _AttAttQsmEql {
4102        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
4103            "@@?=", span,
4104        ))),
4105    }
4106}
4107impl ::m2_syn::Token for _AttAttQsmEql {
4108    const SPELLING: &'static str = "@@?=";
4109    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
4110        match token {
4111            ::m2_syn::TokenTree::Punct(token) => token.text() == "@@?=",
4112            _ => false,
4113        }
4114    }
4115    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
4116        Self::matches_token_tree(&token).then_some(Self {
4117            raw: ::std::boxed::Box::new(token),
4118        })
4119    }
4120}
4121impl ::m2_syn::Parse for _AttAttQsmEql {
4122    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
4123        input.parse_token()
4124    }
4125}
4126impl ::m2_syn::ToTokens for _AttAttQsmEql {
4127    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
4128        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
4129    }
4130}
4131impl ::m2_syn::PrettyTree for _AttAttQsmEql {
4132    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4133        ::m2_syn::PrettyNode::token(
4134            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4135            <Self as ::m2_syn::Token>::SPELLING,
4136            ::m2_syn::Spanned::span(self),
4137        )
4138    }
4139}
4140impl<N> ::m2_syn::Reconstruct<N> for _AttAttQsmEql
4141where
4142    N: ::m2_syn::ExternalCstNode,
4143{
4144    fn matches(node: &N) -> bool {
4145        node.identity().matches("@@?=", false)
4146    }
4147    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4148        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4149            return Err(::m2_syn::ReconstructError::wrong_node(
4150                "@@?=",
4151                false,
4152                node.identity(),
4153            ));
4154        }
4155        Ok(_AttAttQsmEql(node.span()))
4156    }
4157}
4158#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4159pub struct _Bsl {
4160    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4161}
4162#[doc(hidden)]
4163#[allow(non_snake_case)]
4164pub fn _Bsl<S: ::m2_syn::Spanned>(span: S) -> _Bsl {
4165    let span = span.span();
4166    _Bsl {
4167        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("\\", span))),
4168    }
4169}
4170impl ::m2_syn::Token for _Bsl {
4171    const SPELLING: &'static str = "\\";
4172    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
4173        match token {
4174            ::m2_syn::TokenTree::Punct(token) => token.text() == "\\",
4175            _ => false,
4176        }
4177    }
4178    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
4179        Self::matches_token_tree(&token).then_some(Self {
4180            raw: ::std::boxed::Box::new(token),
4181        })
4182    }
4183}
4184impl ::m2_syn::Parse for _Bsl {
4185    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
4186        input.parse_token()
4187    }
4188}
4189impl ::m2_syn::ToTokens for _Bsl {
4190    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
4191        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
4192    }
4193}
4194impl ::m2_syn::PrettyTree for _Bsl {
4195    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4196        ::m2_syn::PrettyNode::token(
4197            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4198            <Self as ::m2_syn::Token>::SPELLING,
4199            ::m2_syn::Spanned::span(self),
4200        )
4201    }
4202}
4203impl<N> ::m2_syn::Reconstruct<N> for _Bsl
4204where
4205    N: ::m2_syn::ExternalCstNode,
4206{
4207    fn matches(node: &N) -> bool {
4208        node.identity().matches("\\", false)
4209    }
4210    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4211        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4212            return Err(::m2_syn::ReconstructError::wrong_node(
4213                "\\",
4214                false,
4215                node.identity(),
4216            ));
4217        }
4218        Ok(_Bsl(node.span()))
4219    }
4220}
4221#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4222pub struct _BslEql {
4223    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4224}
4225#[doc(hidden)]
4226#[allow(non_snake_case)]
4227pub fn _BslEql<S: ::m2_syn::Spanned>(span: S) -> _BslEql {
4228    let span = span.span();
4229    _BslEql {
4230        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
4231            "\\=", span,
4232        ))),
4233    }
4234}
4235impl ::m2_syn::Token for _BslEql {
4236    const SPELLING: &'static str = "\\=";
4237    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
4238        match token {
4239            ::m2_syn::TokenTree::Punct(token) => token.text() == "\\=",
4240            _ => false,
4241        }
4242    }
4243    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
4244        Self::matches_token_tree(&token).then_some(Self {
4245            raw: ::std::boxed::Box::new(token),
4246        })
4247    }
4248}
4249impl ::m2_syn::Parse for _BslEql {
4250    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
4251        input.parse_token()
4252    }
4253}
4254impl ::m2_syn::ToTokens for _BslEql {
4255    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
4256        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
4257    }
4258}
4259impl ::m2_syn::PrettyTree for _BslEql {
4260    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4261        ::m2_syn::PrettyNode::token(
4262            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4263            <Self as ::m2_syn::Token>::SPELLING,
4264            ::m2_syn::Spanned::span(self),
4265        )
4266    }
4267}
4268impl<N> ::m2_syn::Reconstruct<N> for _BslEql
4269where
4270    N: ::m2_syn::ExternalCstNode,
4271{
4272    fn matches(node: &N) -> bool {
4273        node.identity().matches("\\=", false)
4274    }
4275    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4276        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4277            return Err(::m2_syn::ReconstructError::wrong_node(
4278                "\\=",
4279                false,
4280                node.identity(),
4281            ));
4282        }
4283        Ok(_BslEql(node.span()))
4284    }
4285}
4286#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4287pub struct _BslBsl {
4288    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4289}
4290#[doc(hidden)]
4291#[allow(non_snake_case)]
4292pub fn _BslBsl<S: ::m2_syn::Spanned>(span: S) -> _BslBsl {
4293    let span = span.span();
4294    _BslBsl {
4295        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
4296            "\\\\", span,
4297        ))),
4298    }
4299}
4300impl ::m2_syn::Token for _BslBsl {
4301    const SPELLING: &'static str = "\\\\";
4302    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
4303        match token {
4304            ::m2_syn::TokenTree::Punct(token) => token.text() == "\\\\",
4305            _ => false,
4306        }
4307    }
4308    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
4309        Self::matches_token_tree(&token).then_some(Self {
4310            raw: ::std::boxed::Box::new(token),
4311        })
4312    }
4313}
4314impl ::m2_syn::Parse for _BslBsl {
4315    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
4316        input.parse_token()
4317    }
4318}
4319impl ::m2_syn::ToTokens for _BslBsl {
4320    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
4321        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
4322    }
4323}
4324impl ::m2_syn::PrettyTree for _BslBsl {
4325    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4326        ::m2_syn::PrettyNode::token(
4327            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4328            <Self as ::m2_syn::Token>::SPELLING,
4329            ::m2_syn::Spanned::span(self),
4330        )
4331    }
4332}
4333impl<N> ::m2_syn::Reconstruct<N> for _BslBsl
4334where
4335    N: ::m2_syn::ExternalCstNode,
4336{
4337    fn matches(node: &N) -> bool {
4338        node.identity().matches("\\\\", false)
4339    }
4340    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4341        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4342            return Err(::m2_syn::ReconstructError::wrong_node(
4343                "\\\\",
4344                false,
4345                node.identity(),
4346            ));
4347        }
4348        Ok(_BslBsl(node.span()))
4349    }
4350}
4351#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4352pub struct _BslBslEql {
4353    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4354}
4355#[doc(hidden)]
4356#[allow(non_snake_case)]
4357pub fn _BslBslEql<S: ::m2_syn::Spanned>(span: S) -> _BslBslEql {
4358    let span = span.span();
4359    _BslBslEql {
4360        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
4361            "\\\\=", span,
4362        ))),
4363    }
4364}
4365impl ::m2_syn::Token for _BslBslEql {
4366    const SPELLING: &'static str = "\\\\=";
4367    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
4368        match token {
4369            ::m2_syn::TokenTree::Punct(token) => token.text() == "\\\\=",
4370            _ => false,
4371        }
4372    }
4373    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
4374        Self::matches_token_tree(&token).then_some(Self {
4375            raw: ::std::boxed::Box::new(token),
4376        })
4377    }
4378}
4379impl ::m2_syn::Parse for _BslBslEql {
4380    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
4381        input.parse_token()
4382    }
4383}
4384impl ::m2_syn::ToTokens for _BslBslEql {
4385    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
4386        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
4387    }
4388}
4389impl ::m2_syn::PrettyTree for _BslBslEql {
4390    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4391        ::m2_syn::PrettyNode::token(
4392            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4393            <Self as ::m2_syn::Token>::SPELLING,
4394            ::m2_syn::Spanned::span(self),
4395        )
4396    }
4397}
4398impl<N> ::m2_syn::Reconstruct<N> for _BslBslEql
4399where
4400    N: ::m2_syn::ExternalCstNode,
4401{
4402    fn matches(node: &N) -> bool {
4403        node.identity().matches("\\\\=", false)
4404    }
4405    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4406        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4407            return Err(::m2_syn::ReconstructError::wrong_node(
4408                "\\\\=",
4409                false,
4410                node.identity(),
4411            ));
4412        }
4413        Ok(_BslBslEql(node.span()))
4414    }
4415}
4416#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4417pub struct _Crt {
4418    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4419}
4420#[doc(hidden)]
4421#[allow(non_snake_case)]
4422pub fn _Crt<S: ::m2_syn::Spanned>(span: S) -> _Crt {
4423    let span = span.span();
4424    _Crt {
4425        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("^", span))),
4426    }
4427}
4428impl ::m2_syn::Token for _Crt {
4429    const SPELLING: &'static str = "^";
4430    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
4431        match token {
4432            ::m2_syn::TokenTree::Punct(token) => token.text() == "^",
4433            _ => false,
4434        }
4435    }
4436    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
4437        Self::matches_token_tree(&token).then_some(Self {
4438            raw: ::std::boxed::Box::new(token),
4439        })
4440    }
4441}
4442impl ::m2_syn::Parse for _Crt {
4443    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
4444        input.parse_token()
4445    }
4446}
4447impl ::m2_syn::ToTokens for _Crt {
4448    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
4449        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
4450    }
4451}
4452impl ::m2_syn::PrettyTree for _Crt {
4453    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4454        ::m2_syn::PrettyNode::token(
4455            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4456            <Self as ::m2_syn::Token>::SPELLING,
4457            ::m2_syn::Spanned::span(self),
4458        )
4459    }
4460}
4461impl<N> ::m2_syn::Reconstruct<N> for _Crt
4462where
4463    N: ::m2_syn::ExternalCstNode,
4464{
4465    fn matches(node: &N) -> bool {
4466        node.identity().matches("^", false)
4467    }
4468    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4469        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4470            return Err(::m2_syn::ReconstructError::wrong_node(
4471                "^",
4472                false,
4473                node.identity(),
4474            ));
4475        }
4476        Ok(_Crt(node.span()))
4477    }
4478}
4479#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4480pub struct _CrtEql {
4481    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4482}
4483#[doc(hidden)]
4484#[allow(non_snake_case)]
4485pub fn _CrtEql<S: ::m2_syn::Spanned>(span: S) -> _CrtEql {
4486    let span = span.span();
4487    _CrtEql {
4488        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("^=", span))),
4489    }
4490}
4491impl ::m2_syn::Token for _CrtEql {
4492    const SPELLING: &'static str = "^=";
4493    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
4494        match token {
4495            ::m2_syn::TokenTree::Punct(token) => token.text() == "^=",
4496            _ => false,
4497        }
4498    }
4499    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
4500        Self::matches_token_tree(&token).then_some(Self {
4501            raw: ::std::boxed::Box::new(token),
4502        })
4503    }
4504}
4505impl ::m2_syn::Parse for _CrtEql {
4506    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
4507        input.parse_token()
4508    }
4509}
4510impl ::m2_syn::ToTokens for _CrtEql {
4511    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
4512        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
4513    }
4514}
4515impl ::m2_syn::PrettyTree for _CrtEql {
4516    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4517        ::m2_syn::PrettyNode::token(
4518            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4519            <Self as ::m2_syn::Token>::SPELLING,
4520            ::m2_syn::Spanned::span(self),
4521        )
4522    }
4523}
4524impl<N> ::m2_syn::Reconstruct<N> for _CrtEql
4525where
4526    N: ::m2_syn::ExternalCstNode,
4527{
4528    fn matches(node: &N) -> bool {
4529        node.identity().matches("^=", false)
4530    }
4531    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4532        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4533            return Err(::m2_syn::ReconstructError::wrong_node(
4534                "^=",
4535                false,
4536                node.identity(),
4537            ));
4538        }
4539        Ok(_CrtEql(node.span()))
4540    }
4541}
4542#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4543pub struct _CrtMulMul {
4544    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4545}
4546#[doc(hidden)]
4547#[allow(non_snake_case)]
4548pub fn _CrtMulMul<S: ::m2_syn::Spanned>(span: S) -> _CrtMulMul {
4549    let span = span.span();
4550    _CrtMulMul {
4551        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
4552            "^**", span,
4553        ))),
4554    }
4555}
4556impl ::m2_syn::Token for _CrtMulMul {
4557    const SPELLING: &'static str = "^**";
4558    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
4559        match token {
4560            ::m2_syn::TokenTree::Punct(token) => token.text() == "^**",
4561            _ => false,
4562        }
4563    }
4564    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
4565        Self::matches_token_tree(&token).then_some(Self {
4566            raw: ::std::boxed::Box::new(token),
4567        })
4568    }
4569}
4570impl ::m2_syn::Parse for _CrtMulMul {
4571    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
4572        input.parse_token()
4573    }
4574}
4575impl ::m2_syn::ToTokens for _CrtMulMul {
4576    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
4577        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
4578    }
4579}
4580impl ::m2_syn::PrettyTree for _CrtMulMul {
4581    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4582        ::m2_syn::PrettyNode::token(
4583            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4584            <Self as ::m2_syn::Token>::SPELLING,
4585            ::m2_syn::Spanned::span(self),
4586        )
4587    }
4588}
4589impl<N> ::m2_syn::Reconstruct<N> for _CrtMulMul
4590where
4591    N: ::m2_syn::ExternalCstNode,
4592{
4593    fn matches(node: &N) -> bool {
4594        node.identity().matches("^**", false)
4595    }
4596    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4597        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4598            return Err(::m2_syn::ReconstructError::wrong_node(
4599                "^**",
4600                false,
4601                node.identity(),
4602            ));
4603        }
4604        Ok(_CrtMulMul(node.span()))
4605    }
4606}
4607#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4608pub struct _CrtMulMulEql {
4609    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4610}
4611#[doc(hidden)]
4612#[allow(non_snake_case)]
4613pub fn _CrtMulMulEql<S: ::m2_syn::Spanned>(span: S) -> _CrtMulMulEql {
4614    let span = span.span();
4615    _CrtMulMulEql {
4616        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
4617            "^**=", span,
4618        ))),
4619    }
4620}
4621impl ::m2_syn::Token for _CrtMulMulEql {
4622    const SPELLING: &'static str = "^**=";
4623    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
4624        match token {
4625            ::m2_syn::TokenTree::Punct(token) => token.text() == "^**=",
4626            _ => false,
4627        }
4628    }
4629    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
4630        Self::matches_token_tree(&token).then_some(Self {
4631            raw: ::std::boxed::Box::new(token),
4632        })
4633    }
4634}
4635impl ::m2_syn::Parse for _CrtMulMulEql {
4636    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
4637        input.parse_token()
4638    }
4639}
4640impl ::m2_syn::ToTokens for _CrtMulMulEql {
4641    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
4642        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
4643    }
4644}
4645impl ::m2_syn::PrettyTree for _CrtMulMulEql {
4646    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4647        ::m2_syn::PrettyNode::token(
4648            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4649            <Self as ::m2_syn::Token>::SPELLING,
4650            ::m2_syn::Spanned::span(self),
4651        )
4652    }
4653}
4654impl<N> ::m2_syn::Reconstruct<N> for _CrtMulMulEql
4655where
4656    N: ::m2_syn::ExternalCstNode,
4657{
4658    fn matches(node: &N) -> bool {
4659        node.identity().matches("^**=", false)
4660    }
4661    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4662        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4663            return Err(::m2_syn::ReconstructError::wrong_node(
4664                "^**=",
4665                false,
4666                node.identity(),
4667            ));
4668        }
4669        Ok(_CrtMulMulEql(node.span()))
4670    }
4671}
4672#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4673pub struct _CrtLst {
4674    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4675}
4676#[doc(hidden)]
4677#[allow(non_snake_case)]
4678pub fn _CrtLst<S: ::m2_syn::Spanned>(span: S) -> _CrtLst {
4679    let span = span.span();
4680    _CrtLst {
4681        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("^<", span))),
4682    }
4683}
4684impl ::m2_syn::Token for _CrtLst {
4685    const SPELLING: &'static str = "^<";
4686    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
4687        match token {
4688            ::m2_syn::TokenTree::Punct(token) => token.text() == "^<",
4689            _ => false,
4690        }
4691    }
4692    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
4693        Self::matches_token_tree(&token).then_some(Self {
4694            raw: ::std::boxed::Box::new(token),
4695        })
4696    }
4697}
4698impl ::m2_syn::Parse for _CrtLst {
4699    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
4700        input.parse_token()
4701    }
4702}
4703impl ::m2_syn::ToTokens for _CrtLst {
4704    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
4705        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
4706    }
4707}
4708impl ::m2_syn::PrettyTree for _CrtLst {
4709    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4710        ::m2_syn::PrettyNode::token(
4711            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4712            <Self as ::m2_syn::Token>::SPELLING,
4713            ::m2_syn::Spanned::span(self),
4714        )
4715    }
4716}
4717impl<N> ::m2_syn::Reconstruct<N> for _CrtLst
4718where
4719    N: ::m2_syn::ExternalCstNode,
4720{
4721    fn matches(node: &N) -> bool {
4722        node.identity().matches("^<", false)
4723    }
4724    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4725        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4726            return Err(::m2_syn::ReconstructError::wrong_node(
4727                "^<",
4728                false,
4729                node.identity(),
4730            ));
4731        }
4732        Ok(_CrtLst(node.span()))
4733    }
4734}
4735#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4736pub struct _CrtLstEql {
4737    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4738}
4739#[doc(hidden)]
4740#[allow(non_snake_case)]
4741pub fn _CrtLstEql<S: ::m2_syn::Spanned>(span: S) -> _CrtLstEql {
4742    let span = span.span();
4743    _CrtLstEql {
4744        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
4745            "^<=", span,
4746        ))),
4747    }
4748}
4749impl ::m2_syn::Token for _CrtLstEql {
4750    const SPELLING: &'static str = "^<=";
4751    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
4752        match token {
4753            ::m2_syn::TokenTree::Punct(token) => token.text() == "^<=",
4754            _ => false,
4755        }
4756    }
4757    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
4758        Self::matches_token_tree(&token).then_some(Self {
4759            raw: ::std::boxed::Box::new(token),
4760        })
4761    }
4762}
4763impl ::m2_syn::Parse for _CrtLstEql {
4764    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
4765        input.parse_token()
4766    }
4767}
4768impl ::m2_syn::ToTokens for _CrtLstEql {
4769    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
4770        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
4771    }
4772}
4773impl ::m2_syn::PrettyTree for _CrtLstEql {
4774    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4775        ::m2_syn::PrettyNode::token(
4776            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4777            <Self as ::m2_syn::Token>::SPELLING,
4778            ::m2_syn::Spanned::span(self),
4779        )
4780    }
4781}
4782impl<N> ::m2_syn::Reconstruct<N> for _CrtLstEql
4783where
4784    N: ::m2_syn::ExternalCstNode,
4785{
4786    fn matches(node: &N) -> bool {
4787        node.identity().matches("^<=", false)
4788    }
4789    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4790        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4791            return Err(::m2_syn::ReconstructError::wrong_node(
4792                "^<=",
4793                false,
4794                node.identity(),
4795            ));
4796        }
4797        Ok(_CrtLstEql(node.span()))
4798    }
4799}
4800#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4801pub struct _CrtGst {
4802    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4803}
4804#[doc(hidden)]
4805#[allow(non_snake_case)]
4806pub fn _CrtGst<S: ::m2_syn::Spanned>(span: S) -> _CrtGst {
4807    let span = span.span();
4808    _CrtGst {
4809        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("^>", span))),
4810    }
4811}
4812impl ::m2_syn::Token for _CrtGst {
4813    const SPELLING: &'static str = "^>";
4814    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
4815        match token {
4816            ::m2_syn::TokenTree::Punct(token) => token.text() == "^>",
4817            _ => false,
4818        }
4819    }
4820    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
4821        Self::matches_token_tree(&token).then_some(Self {
4822            raw: ::std::boxed::Box::new(token),
4823        })
4824    }
4825}
4826impl ::m2_syn::Parse for _CrtGst {
4827    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
4828        input.parse_token()
4829    }
4830}
4831impl ::m2_syn::ToTokens for _CrtGst {
4832    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
4833        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
4834    }
4835}
4836impl ::m2_syn::PrettyTree for _CrtGst {
4837    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4838        ::m2_syn::PrettyNode::token(
4839            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4840            <Self as ::m2_syn::Token>::SPELLING,
4841            ::m2_syn::Spanned::span(self),
4842        )
4843    }
4844}
4845impl<N> ::m2_syn::Reconstruct<N> for _CrtGst
4846where
4847    N: ::m2_syn::ExternalCstNode,
4848{
4849    fn matches(node: &N) -> bool {
4850        node.identity().matches("^>", false)
4851    }
4852    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4853        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4854            return Err(::m2_syn::ReconstructError::wrong_node(
4855                "^>",
4856                false,
4857                node.identity(),
4858            ));
4859        }
4860        Ok(_CrtGst(node.span()))
4861    }
4862}
4863#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4864pub struct _CrtGstEql {
4865    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4866}
4867#[doc(hidden)]
4868#[allow(non_snake_case)]
4869pub fn _CrtGstEql<S: ::m2_syn::Spanned>(span: S) -> _CrtGstEql {
4870    let span = span.span();
4871    _CrtGstEql {
4872        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
4873            "^>=", span,
4874        ))),
4875    }
4876}
4877impl ::m2_syn::Token for _CrtGstEql {
4878    const SPELLING: &'static str = "^>=";
4879    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
4880        match token {
4881            ::m2_syn::TokenTree::Punct(token) => token.text() == "^>=",
4882            _ => false,
4883        }
4884    }
4885    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
4886        Self::matches_token_tree(&token).then_some(Self {
4887            raw: ::std::boxed::Box::new(token),
4888        })
4889    }
4890}
4891impl ::m2_syn::Parse for _CrtGstEql {
4892    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
4893        input.parse_token()
4894    }
4895}
4896impl ::m2_syn::ToTokens for _CrtGstEql {
4897    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
4898        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
4899    }
4900}
4901impl ::m2_syn::PrettyTree for _CrtGstEql {
4902    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4903        ::m2_syn::PrettyNode::token(
4904            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4905            <Self as ::m2_syn::Token>::SPELLING,
4906            ::m2_syn::Spanned::span(self),
4907        )
4908    }
4909}
4910impl<N> ::m2_syn::Reconstruct<N> for _CrtGstEql
4911where
4912    N: ::m2_syn::ExternalCstNode,
4913{
4914    fn matches(node: &N) -> bool {
4915        node.identity().matches("^>=", false)
4916    }
4917    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4918        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4919            return Err(::m2_syn::ReconstructError::wrong_node(
4920                "^>=",
4921                false,
4922                node.identity(),
4923            ));
4924        }
4925        Ok(_CrtGstEql(node.span()))
4926    }
4927}
4928#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4929pub struct _CrtCrt {
4930    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4931}
4932#[doc(hidden)]
4933#[allow(non_snake_case)]
4934pub fn _CrtCrt<S: ::m2_syn::Spanned>(span: S) -> _CrtCrt {
4935    let span = span.span();
4936    _CrtCrt {
4937        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("^^", span))),
4938    }
4939}
4940impl ::m2_syn::Token for _CrtCrt {
4941    const SPELLING: &'static str = "^^";
4942    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
4943        match token {
4944            ::m2_syn::TokenTree::Punct(token) => token.text() == "^^",
4945            _ => false,
4946        }
4947    }
4948    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
4949        Self::matches_token_tree(&token).then_some(Self {
4950            raw: ::std::boxed::Box::new(token),
4951        })
4952    }
4953}
4954impl ::m2_syn::Parse for _CrtCrt {
4955    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
4956        input.parse_token()
4957    }
4958}
4959impl ::m2_syn::ToTokens for _CrtCrt {
4960    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
4961        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
4962    }
4963}
4964impl ::m2_syn::PrettyTree for _CrtCrt {
4965    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
4966        ::m2_syn::PrettyNode::token(
4967            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
4968            <Self as ::m2_syn::Token>::SPELLING,
4969            ::m2_syn::Spanned::span(self),
4970        )
4971    }
4972}
4973impl<N> ::m2_syn::Reconstruct<N> for _CrtCrt
4974where
4975    N: ::m2_syn::ExternalCstNode,
4976{
4977    fn matches(node: &N) -> bool {
4978        node.identity().matches("^^", false)
4979    }
4980    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
4981        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
4982            return Err(::m2_syn::ReconstructError::wrong_node(
4983                "^^",
4984                false,
4985                node.identity(),
4986            ));
4987        }
4988        Ok(_CrtCrt(node.span()))
4989    }
4990}
4991#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
4992pub struct _CrtCrtEql {
4993    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
4994}
4995#[doc(hidden)]
4996#[allow(non_snake_case)]
4997pub fn _CrtCrtEql<S: ::m2_syn::Spanned>(span: S) -> _CrtCrtEql {
4998    let span = span.span();
4999    _CrtCrtEql {
5000        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
5001            "^^=", span,
5002        ))),
5003    }
5004}
5005impl ::m2_syn::Token for _CrtCrtEql {
5006    const SPELLING: &'static str = "^^=";
5007    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5008        match token {
5009            ::m2_syn::TokenTree::Punct(token) => token.text() == "^^=",
5010            _ => false,
5011        }
5012    }
5013    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5014        Self::matches_token_tree(&token).then_some(Self {
5015            raw: ::std::boxed::Box::new(token),
5016        })
5017    }
5018}
5019impl ::m2_syn::Parse for _CrtCrtEql {
5020    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5021        input.parse_token()
5022    }
5023}
5024impl ::m2_syn::ToTokens for _CrtCrtEql {
5025    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5026        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5027    }
5028}
5029impl ::m2_syn::PrettyTree for _CrtCrtEql {
5030    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5031        ::m2_syn::PrettyNode::token(
5032            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5033            <Self as ::m2_syn::Token>::SPELLING,
5034            ::m2_syn::Spanned::span(self),
5035        )
5036    }
5037}
5038impl<N> ::m2_syn::Reconstruct<N> for _CrtCrtEql
5039where
5040    N: ::m2_syn::ExternalCstNode,
5041{
5042    fn matches(node: &N) -> bool {
5043        node.identity().matches("^^=", false)
5044    }
5045    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
5046        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
5047            return Err(::m2_syn::ReconstructError::wrong_node(
5048                "^^=",
5049                false,
5050                node.identity(),
5051            ));
5052        }
5053        Ok(_CrtCrtEql(node.span()))
5054    }
5055}
5056#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
5057pub struct _Ubs {
5058    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
5059}
5060#[doc(hidden)]
5061#[allow(non_snake_case)]
5062pub fn _Ubs<S: ::m2_syn::Spanned>(span: S) -> _Ubs {
5063    let span = span.span();
5064    _Ubs {
5065        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("_", span))),
5066    }
5067}
5068impl ::m2_syn::Token for _Ubs {
5069    const SPELLING: &'static str = "_";
5070    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5071        match token {
5072            ::m2_syn::TokenTree::Punct(token) => token.text() == "_",
5073            _ => false,
5074        }
5075    }
5076    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5077        Self::matches_token_tree(&token).then_some(Self {
5078            raw: ::std::boxed::Box::new(token),
5079        })
5080    }
5081}
5082impl ::m2_syn::Parse for _Ubs {
5083    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5084        input.parse_token()
5085    }
5086}
5087impl ::m2_syn::ToTokens for _Ubs {
5088    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5089        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5090    }
5091}
5092impl ::m2_syn::PrettyTree for _Ubs {
5093    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5094        ::m2_syn::PrettyNode::token(
5095            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5096            <Self as ::m2_syn::Token>::SPELLING,
5097            ::m2_syn::Spanned::span(self),
5098        )
5099    }
5100}
5101impl<N> ::m2_syn::Reconstruct<N> for _Ubs
5102where
5103    N: ::m2_syn::ExternalCstNode,
5104{
5105    fn matches(node: &N) -> bool {
5106        node.identity().matches("_", false)
5107    }
5108    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
5109        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
5110            return Err(::m2_syn::ReconstructError::wrong_node(
5111                "_",
5112                false,
5113                node.identity(),
5114            ));
5115        }
5116        Ok(_Ubs(node.span()))
5117    }
5118}
5119#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
5120pub struct _UbsEql {
5121    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
5122}
5123#[doc(hidden)]
5124#[allow(non_snake_case)]
5125pub fn _UbsEql<S: ::m2_syn::Spanned>(span: S) -> _UbsEql {
5126    let span = span.span();
5127    _UbsEql {
5128        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("_=", span))),
5129    }
5130}
5131impl ::m2_syn::Token for _UbsEql {
5132    const SPELLING: &'static str = "_=";
5133    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5134        match token {
5135            ::m2_syn::TokenTree::Punct(token) => token.text() == "_=",
5136            _ => false,
5137        }
5138    }
5139    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5140        Self::matches_token_tree(&token).then_some(Self {
5141            raw: ::std::boxed::Box::new(token),
5142        })
5143    }
5144}
5145impl ::m2_syn::Parse for _UbsEql {
5146    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5147        input.parse_token()
5148    }
5149}
5150impl ::m2_syn::ToTokens for _UbsEql {
5151    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5152        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5153    }
5154}
5155impl ::m2_syn::PrettyTree for _UbsEql {
5156    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5157        ::m2_syn::PrettyNode::token(
5158            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5159            <Self as ::m2_syn::Token>::SPELLING,
5160            ::m2_syn::Spanned::span(self),
5161        )
5162    }
5163}
5164impl<N> ::m2_syn::Reconstruct<N> for _UbsEql
5165where
5166    N: ::m2_syn::ExternalCstNode,
5167{
5168    fn matches(node: &N) -> bool {
5169        node.identity().matches("_=", false)
5170    }
5171    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
5172        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
5173            return Err(::m2_syn::ReconstructError::wrong_node(
5174                "_=",
5175                false,
5176                node.identity(),
5177            ));
5178        }
5179        Ok(_UbsEql(node.span()))
5180    }
5181}
5182#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
5183pub struct _UbsLst {
5184    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
5185}
5186#[doc(hidden)]
5187#[allow(non_snake_case)]
5188pub fn _UbsLst<S: ::m2_syn::Spanned>(span: S) -> _UbsLst {
5189    let span = span.span();
5190    _UbsLst {
5191        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("_<", span))),
5192    }
5193}
5194impl ::m2_syn::Token for _UbsLst {
5195    const SPELLING: &'static str = "_<";
5196    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5197        match token {
5198            ::m2_syn::TokenTree::Punct(token) => token.text() == "_<",
5199            _ => false,
5200        }
5201    }
5202    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5203        Self::matches_token_tree(&token).then_some(Self {
5204            raw: ::std::boxed::Box::new(token),
5205        })
5206    }
5207}
5208impl ::m2_syn::Parse for _UbsLst {
5209    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5210        input.parse_token()
5211    }
5212}
5213impl ::m2_syn::ToTokens for _UbsLst {
5214    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5215        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5216    }
5217}
5218impl ::m2_syn::PrettyTree for _UbsLst {
5219    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5220        ::m2_syn::PrettyNode::token(
5221            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5222            <Self as ::m2_syn::Token>::SPELLING,
5223            ::m2_syn::Spanned::span(self),
5224        )
5225    }
5226}
5227impl<N> ::m2_syn::Reconstruct<N> for _UbsLst
5228where
5229    N: ::m2_syn::ExternalCstNode,
5230{
5231    fn matches(node: &N) -> bool {
5232        node.identity().matches("_<", false)
5233    }
5234    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
5235        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
5236            return Err(::m2_syn::ReconstructError::wrong_node(
5237                "_<",
5238                false,
5239                node.identity(),
5240            ));
5241        }
5242        Ok(_UbsLst(node.span()))
5243    }
5244}
5245#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
5246pub struct _UbsLstEql {
5247    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
5248}
5249#[doc(hidden)]
5250#[allow(non_snake_case)]
5251pub fn _UbsLstEql<S: ::m2_syn::Spanned>(span: S) -> _UbsLstEql {
5252    let span = span.span();
5253    _UbsLstEql {
5254        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
5255            "_<=", span,
5256        ))),
5257    }
5258}
5259impl ::m2_syn::Token for _UbsLstEql {
5260    const SPELLING: &'static str = "_<=";
5261    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5262        match token {
5263            ::m2_syn::TokenTree::Punct(token) => token.text() == "_<=",
5264            _ => false,
5265        }
5266    }
5267    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5268        Self::matches_token_tree(&token).then_some(Self {
5269            raw: ::std::boxed::Box::new(token),
5270        })
5271    }
5272}
5273impl ::m2_syn::Parse for _UbsLstEql {
5274    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5275        input.parse_token()
5276    }
5277}
5278impl ::m2_syn::ToTokens for _UbsLstEql {
5279    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5280        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5281    }
5282}
5283impl ::m2_syn::PrettyTree for _UbsLstEql {
5284    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5285        ::m2_syn::PrettyNode::token(
5286            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5287            <Self as ::m2_syn::Token>::SPELLING,
5288            ::m2_syn::Spanned::span(self),
5289        )
5290    }
5291}
5292impl<N> ::m2_syn::Reconstruct<N> for _UbsLstEql
5293where
5294    N: ::m2_syn::ExternalCstNode,
5295{
5296    fn matches(node: &N) -> bool {
5297        node.identity().matches("_<=", false)
5298    }
5299    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
5300        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
5301            return Err(::m2_syn::ReconstructError::wrong_node(
5302                "_<=",
5303                false,
5304                node.identity(),
5305            ));
5306        }
5307        Ok(_UbsLstEql(node.span()))
5308    }
5309}
5310#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
5311pub struct _UbsGst {
5312    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
5313}
5314#[doc(hidden)]
5315#[allow(non_snake_case)]
5316pub fn _UbsGst<S: ::m2_syn::Spanned>(span: S) -> _UbsGst {
5317    let span = span.span();
5318    _UbsGst {
5319        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("_>", span))),
5320    }
5321}
5322impl ::m2_syn::Token for _UbsGst {
5323    const SPELLING: &'static str = "_>";
5324    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5325        match token {
5326            ::m2_syn::TokenTree::Punct(token) => token.text() == "_>",
5327            _ => false,
5328        }
5329    }
5330    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5331        Self::matches_token_tree(&token).then_some(Self {
5332            raw: ::std::boxed::Box::new(token),
5333        })
5334    }
5335}
5336impl ::m2_syn::Parse for _UbsGst {
5337    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5338        input.parse_token()
5339    }
5340}
5341impl ::m2_syn::ToTokens for _UbsGst {
5342    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5343        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5344    }
5345}
5346impl ::m2_syn::PrettyTree for _UbsGst {
5347    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5348        ::m2_syn::PrettyNode::token(
5349            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5350            <Self as ::m2_syn::Token>::SPELLING,
5351            ::m2_syn::Spanned::span(self),
5352        )
5353    }
5354}
5355impl<N> ::m2_syn::Reconstruct<N> for _UbsGst
5356where
5357    N: ::m2_syn::ExternalCstNode,
5358{
5359    fn matches(node: &N) -> bool {
5360        node.identity().matches("_>", false)
5361    }
5362    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
5363        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
5364            return Err(::m2_syn::ReconstructError::wrong_node(
5365                "_>",
5366                false,
5367                node.identity(),
5368            ));
5369        }
5370        Ok(_UbsGst(node.span()))
5371    }
5372}
5373#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
5374pub struct _UbsGstEql {
5375    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
5376}
5377#[doc(hidden)]
5378#[allow(non_snake_case)]
5379pub fn _UbsGstEql<S: ::m2_syn::Spanned>(span: S) -> _UbsGstEql {
5380    let span = span.span();
5381    _UbsGstEql {
5382        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
5383            "_>=", span,
5384        ))),
5385    }
5386}
5387impl ::m2_syn::Token for _UbsGstEql {
5388    const SPELLING: &'static str = "_>=";
5389    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5390        match token {
5391            ::m2_syn::TokenTree::Punct(token) => token.text() == "_>=",
5392            _ => false,
5393        }
5394    }
5395    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5396        Self::matches_token_tree(&token).then_some(Self {
5397            raw: ::std::boxed::Box::new(token),
5398        })
5399    }
5400}
5401impl ::m2_syn::Parse for _UbsGstEql {
5402    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5403        input.parse_token()
5404    }
5405}
5406impl ::m2_syn::ToTokens for _UbsGstEql {
5407    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5408        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5409    }
5410}
5411impl ::m2_syn::PrettyTree for _UbsGstEql {
5412    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5413        ::m2_syn::PrettyNode::token(
5414            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5415            <Self as ::m2_syn::Token>::SPELLING,
5416            ::m2_syn::Spanned::span(self),
5417        )
5418    }
5419}
5420impl<N> ::m2_syn::Reconstruct<N> for _UbsGstEql
5421where
5422    N: ::m2_syn::ExternalCstNode,
5423{
5424    fn matches(node: &N) -> bool {
5425        node.identity().matches("_>=", false)
5426    }
5427    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
5428        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
5429            return Err(::m2_syn::ReconstructError::wrong_node(
5430                "_>=",
5431                false,
5432                node.identity(),
5433            ));
5434        }
5435        Ok(_UbsGstEql(node.span()))
5436    }
5437}
5438#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
5439pub struct _Pip {
5440    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
5441}
5442#[doc(hidden)]
5443#[allow(non_snake_case)]
5444pub fn _Pip<S: ::m2_syn::Spanned>(span: S) -> _Pip {
5445    let span = span.span();
5446    _Pip {
5447        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("|", span))),
5448    }
5449}
5450impl ::m2_syn::Token for _Pip {
5451    const SPELLING: &'static str = "|";
5452    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5453        match token {
5454            ::m2_syn::TokenTree::Punct(token) => token.text() == "|",
5455            _ => false,
5456        }
5457    }
5458    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5459        Self::matches_token_tree(&token).then_some(Self {
5460            raw: ::std::boxed::Box::new(token),
5461        })
5462    }
5463}
5464impl ::m2_syn::Parse for _Pip {
5465    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5466        input.parse_token()
5467    }
5468}
5469impl ::m2_syn::ToTokens for _Pip {
5470    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5471        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5472    }
5473}
5474impl ::m2_syn::PrettyTree for _Pip {
5475    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5476        ::m2_syn::PrettyNode::token(
5477            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5478            <Self as ::m2_syn::Token>::SPELLING,
5479            ::m2_syn::Spanned::span(self),
5480        )
5481    }
5482}
5483impl<N> ::m2_syn::Reconstruct<N> for _Pip
5484where
5485    N: ::m2_syn::ExternalCstNode,
5486{
5487    fn matches(node: &N) -> bool {
5488        node.identity().matches("|", false)
5489    }
5490    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
5491        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
5492            return Err(::m2_syn::ReconstructError::wrong_node(
5493                "|",
5494                false,
5495                node.identity(),
5496            ));
5497        }
5498        Ok(_Pip(node.span()))
5499    }
5500}
5501#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
5502pub struct _PipEql {
5503    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
5504}
5505#[doc(hidden)]
5506#[allow(non_snake_case)]
5507pub fn _PipEql<S: ::m2_syn::Spanned>(span: S) -> _PipEql {
5508    let span = span.span();
5509    _PipEql {
5510        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("|=", span))),
5511    }
5512}
5513impl ::m2_syn::Token for _PipEql {
5514    const SPELLING: &'static str = "|=";
5515    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5516        match token {
5517            ::m2_syn::TokenTree::Punct(token) => token.text() == "|=",
5518            _ => false,
5519        }
5520    }
5521    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5522        Self::matches_token_tree(&token).then_some(Self {
5523            raw: ::std::boxed::Box::new(token),
5524        })
5525    }
5526}
5527impl ::m2_syn::Parse for _PipEql {
5528    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5529        input.parse_token()
5530    }
5531}
5532impl ::m2_syn::ToTokens for _PipEql {
5533    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5534        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5535    }
5536}
5537impl ::m2_syn::PrettyTree for _PipEql {
5538    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5539        ::m2_syn::PrettyNode::token(
5540            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5541            <Self as ::m2_syn::Token>::SPELLING,
5542            ::m2_syn::Spanned::span(self),
5543        )
5544    }
5545}
5546impl<N> ::m2_syn::Reconstruct<N> for _PipEql
5547where
5548    N: ::m2_syn::ExternalCstNode,
5549{
5550    fn matches(node: &N) -> bool {
5551        node.identity().matches("|=", false)
5552    }
5553    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
5554        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
5555            return Err(::m2_syn::ReconstructError::wrong_node(
5556                "|=",
5557                false,
5558                node.identity(),
5559            ));
5560        }
5561        Ok(_PipEql(node.span()))
5562    }
5563}
5564#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
5565pub struct _PipSub {
5566    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
5567}
5568#[doc(hidden)]
5569#[allow(non_snake_case)]
5570pub fn _PipSub<S: ::m2_syn::Spanned>(span: S) -> _PipSub {
5571    let span = span.span();
5572    _PipSub {
5573        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("|-", span))),
5574    }
5575}
5576impl ::m2_syn::Token for _PipSub {
5577    const SPELLING: &'static str = "|-";
5578    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5579        match token {
5580            ::m2_syn::TokenTree::Punct(token) => token.text() == "|-",
5581            _ => false,
5582        }
5583    }
5584    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5585        Self::matches_token_tree(&token).then_some(Self {
5586            raw: ::std::boxed::Box::new(token),
5587        })
5588    }
5589}
5590impl ::m2_syn::Parse for _PipSub {
5591    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5592        input.parse_token()
5593    }
5594}
5595impl ::m2_syn::ToTokens for _PipSub {
5596    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5597        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5598    }
5599}
5600impl ::m2_syn::PrettyTree for _PipSub {
5601    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5602        ::m2_syn::PrettyNode::token(
5603            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5604            <Self as ::m2_syn::Token>::SPELLING,
5605            ::m2_syn::Spanned::span(self),
5606        )
5607    }
5608}
5609impl<N> ::m2_syn::Reconstruct<N> for _PipSub
5610where
5611    N: ::m2_syn::ExternalCstNode,
5612{
5613    fn matches(node: &N) -> bool {
5614        node.identity().matches("|-", false)
5615    }
5616    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
5617        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
5618            return Err(::m2_syn::ReconstructError::wrong_node(
5619                "|-",
5620                false,
5621                node.identity(),
5622            ));
5623        }
5624        Ok(_PipSub(node.span()))
5625    }
5626}
5627#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
5628pub struct _PipSubEql {
5629    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
5630}
5631#[doc(hidden)]
5632#[allow(non_snake_case)]
5633pub fn _PipSubEql<S: ::m2_syn::Spanned>(span: S) -> _PipSubEql {
5634    let span = span.span();
5635    _PipSubEql {
5636        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
5637            "|-=", span,
5638        ))),
5639    }
5640}
5641impl ::m2_syn::Token for _PipSubEql {
5642    const SPELLING: &'static str = "|-=";
5643    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5644        match token {
5645            ::m2_syn::TokenTree::Punct(token) => token.text() == "|-=",
5646            _ => false,
5647        }
5648    }
5649    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5650        Self::matches_token_tree(&token).then_some(Self {
5651            raw: ::std::boxed::Box::new(token),
5652        })
5653    }
5654}
5655impl ::m2_syn::Parse for _PipSubEql {
5656    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5657        input.parse_token()
5658    }
5659}
5660impl ::m2_syn::ToTokens for _PipSubEql {
5661    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5662        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5663    }
5664}
5665impl ::m2_syn::PrettyTree for _PipSubEql {
5666    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5667        ::m2_syn::PrettyNode::token(
5668            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5669            <Self as ::m2_syn::Token>::SPELLING,
5670            ::m2_syn::Spanned::span(self),
5671        )
5672    }
5673}
5674impl<N> ::m2_syn::Reconstruct<N> for _PipSubEql
5675where
5676    N: ::m2_syn::ExternalCstNode,
5677{
5678    fn matches(node: &N) -> bool {
5679        node.identity().matches("|-=", false)
5680    }
5681    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
5682        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
5683            return Err(::m2_syn::ReconstructError::wrong_node(
5684                "|-=",
5685                false,
5686                node.identity(),
5687            ));
5688        }
5689        Ok(_PipSubEql(node.span()))
5690    }
5691}
5692#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
5693pub struct _PipUbs {
5694    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
5695}
5696#[doc(hidden)]
5697#[allow(non_snake_case)]
5698pub fn _PipUbs<S: ::m2_syn::Spanned>(span: S) -> _PipUbs {
5699    let span = span.span();
5700    _PipUbs {
5701        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("|_", span))),
5702    }
5703}
5704impl ::m2_syn::Token for _PipUbs {
5705    const SPELLING: &'static str = "|_";
5706    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5707        match token {
5708            ::m2_syn::TokenTree::Punct(token) => token.text() == "|_",
5709            _ => false,
5710        }
5711    }
5712    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5713        Self::matches_token_tree(&token).then_some(Self {
5714            raw: ::std::boxed::Box::new(token),
5715        })
5716    }
5717}
5718impl ::m2_syn::Parse for _PipUbs {
5719    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5720        input.parse_token()
5721    }
5722}
5723impl ::m2_syn::ToTokens for _PipUbs {
5724    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5725        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5726    }
5727}
5728impl ::m2_syn::PrettyTree for _PipUbs {
5729    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5730        ::m2_syn::PrettyNode::token(
5731            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5732            <Self as ::m2_syn::Token>::SPELLING,
5733            ::m2_syn::Spanned::span(self),
5734        )
5735    }
5736}
5737impl<N> ::m2_syn::Reconstruct<N> for _PipUbs
5738where
5739    N: ::m2_syn::ExternalCstNode,
5740{
5741    fn matches(node: &N) -> bool {
5742        node.identity().matches("|_", false)
5743    }
5744    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
5745        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
5746            return Err(::m2_syn::ReconstructError::wrong_node(
5747                "|_",
5748                false,
5749                node.identity(),
5750            ));
5751        }
5752        Ok(_PipUbs(node.span()))
5753    }
5754}
5755#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
5756pub struct _PipUbsEql {
5757    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
5758}
5759#[doc(hidden)]
5760#[allow(non_snake_case)]
5761pub fn _PipUbsEql<S: ::m2_syn::Spanned>(span: S) -> _PipUbsEql {
5762    let span = span.span();
5763    _PipUbsEql {
5764        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
5765            "|_=", span,
5766        ))),
5767    }
5768}
5769impl ::m2_syn::Token for _PipUbsEql {
5770    const SPELLING: &'static str = "|_=";
5771    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5772        match token {
5773            ::m2_syn::TokenTree::Punct(token) => token.text() == "|_=",
5774            _ => false,
5775        }
5776    }
5777    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5778        Self::matches_token_tree(&token).then_some(Self {
5779            raw: ::std::boxed::Box::new(token),
5780        })
5781    }
5782}
5783impl ::m2_syn::Parse for _PipUbsEql {
5784    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5785        input.parse_token()
5786    }
5787}
5788impl ::m2_syn::ToTokens for _PipUbsEql {
5789    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5790        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5791    }
5792}
5793impl ::m2_syn::PrettyTree for _PipUbsEql {
5794    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5795        ::m2_syn::PrettyNode::token(
5796            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5797            <Self as ::m2_syn::Token>::SPELLING,
5798            ::m2_syn::Spanned::span(self),
5799        )
5800    }
5801}
5802impl<N> ::m2_syn::Reconstruct<N> for _PipUbsEql
5803where
5804    N: ::m2_syn::ExternalCstNode,
5805{
5806    fn matches(node: &N) -> bool {
5807        node.identity().matches("|_=", false)
5808    }
5809    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
5810        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
5811            return Err(::m2_syn::ReconstructError::wrong_node(
5812                "|_=",
5813                false,
5814                node.identity(),
5815            ));
5816        }
5817        Ok(_PipUbsEql(node.span()))
5818    }
5819}
5820#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
5821pub struct _PipPip {
5822    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
5823}
5824#[doc(hidden)]
5825#[allow(non_snake_case)]
5826pub fn _PipPip<S: ::m2_syn::Spanned>(span: S) -> _PipPip {
5827    let span = span.span();
5828    _PipPip {
5829        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("||", span))),
5830    }
5831}
5832impl ::m2_syn::Token for _PipPip {
5833    const SPELLING: &'static str = "||";
5834    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5835        match token {
5836            ::m2_syn::TokenTree::Punct(token) => token.text() == "||",
5837            _ => false,
5838        }
5839    }
5840    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5841        Self::matches_token_tree(&token).then_some(Self {
5842            raw: ::std::boxed::Box::new(token),
5843        })
5844    }
5845}
5846impl ::m2_syn::Parse for _PipPip {
5847    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5848        input.parse_token()
5849    }
5850}
5851impl ::m2_syn::ToTokens for _PipPip {
5852    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5853        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5854    }
5855}
5856impl ::m2_syn::PrettyTree for _PipPip {
5857    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5858        ::m2_syn::PrettyNode::token(
5859            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5860            <Self as ::m2_syn::Token>::SPELLING,
5861            ::m2_syn::Spanned::span(self),
5862        )
5863    }
5864}
5865impl<N> ::m2_syn::Reconstruct<N> for _PipPip
5866where
5867    N: ::m2_syn::ExternalCstNode,
5868{
5869    fn matches(node: &N) -> bool {
5870        node.identity().matches("||", false)
5871    }
5872    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
5873        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
5874            return Err(::m2_syn::ReconstructError::wrong_node(
5875                "||",
5876                false,
5877                node.identity(),
5878            ));
5879        }
5880        Ok(_PipPip(node.span()))
5881    }
5882}
5883#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
5884pub struct _PipPipEql {
5885    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
5886}
5887#[doc(hidden)]
5888#[allow(non_snake_case)]
5889pub fn _PipPipEql<S: ::m2_syn::Spanned>(span: S) -> _PipPipEql {
5890    let span = span.span();
5891    _PipPipEql {
5892        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
5893            "||=", span,
5894        ))),
5895    }
5896}
5897impl ::m2_syn::Token for _PipPipEql {
5898    const SPELLING: &'static str = "||=";
5899    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5900        match token {
5901            ::m2_syn::TokenTree::Punct(token) => token.text() == "||=",
5902            _ => false,
5903        }
5904    }
5905    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5906        Self::matches_token_tree(&token).then_some(Self {
5907            raw: ::std::boxed::Box::new(token),
5908        })
5909    }
5910}
5911impl ::m2_syn::Parse for _PipPipEql {
5912    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5913        input.parse_token()
5914    }
5915}
5916impl ::m2_syn::ToTokens for _PipPipEql {
5917    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5918        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5919    }
5920}
5921impl ::m2_syn::PrettyTree for _PipPipEql {
5922    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5923        ::m2_syn::PrettyNode::token(
5924            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5925            <Self as ::m2_syn::Token>::SPELLING,
5926            ::m2_syn::Spanned::span(self),
5927        )
5928    }
5929}
5930impl<N> ::m2_syn::Reconstruct<N> for _PipPipEql
5931where
5932    N: ::m2_syn::ExternalCstNode,
5933{
5934    fn matches(node: &N) -> bool {
5935        node.identity().matches("||=", false)
5936    }
5937    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
5938        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
5939            return Err(::m2_syn::ReconstructError::wrong_node(
5940                "||=",
5941                false,
5942                node.identity(),
5943            ));
5944        }
5945        Ok(_PipPipEql(node.span()))
5946    }
5947}
5948#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
5949pub struct _Tld {
5950    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
5951}
5952#[doc(hidden)]
5953#[allow(non_snake_case)]
5954pub fn _Tld<S: ::m2_syn::Spanned>(span: S) -> _Tld {
5955    let span = span.span();
5956    _Tld {
5957        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("~", span))),
5958    }
5959}
5960impl ::m2_syn::Token for _Tld {
5961    const SPELLING: &'static str = "~";
5962    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
5963        match token {
5964            ::m2_syn::TokenTree::Punct(token) => token.text() == "~",
5965            _ => false,
5966        }
5967    }
5968    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
5969        Self::matches_token_tree(&token).then_some(Self {
5970            raw: ::std::boxed::Box::new(token),
5971        })
5972    }
5973}
5974impl ::m2_syn::Parse for _Tld {
5975    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
5976        input.parse_token()
5977    }
5978}
5979impl ::m2_syn::ToTokens for _Tld {
5980    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
5981        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
5982    }
5983}
5984impl ::m2_syn::PrettyTree for _Tld {
5985    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
5986        ::m2_syn::PrettyNode::token(
5987            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
5988            <Self as ::m2_syn::Token>::SPELLING,
5989            ::m2_syn::Spanned::span(self),
5990        )
5991    }
5992}
5993impl<N> ::m2_syn::Reconstruct<N> for _Tld
5994where
5995    N: ::m2_syn::ExternalCstNode,
5996{
5997    fn matches(node: &N) -> bool {
5998        node.identity().matches("~", false)
5999    }
6000    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6001        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6002            return Err(::m2_syn::ReconstructError::wrong_node(
6003                "~",
6004                false,
6005                node.identity(),
6006            ));
6007        }
6008        Ok(_Tld(node.span()))
6009    }
6010}
6011#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6012pub struct _TldEql {
6013    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6014}
6015#[doc(hidden)]
6016#[allow(non_snake_case)]
6017pub fn _TldEql<S: ::m2_syn::Spanned>(span: S) -> _TldEql {
6018    let span = span.span();
6019    _TldEql {
6020        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("~=", span))),
6021    }
6022}
6023impl ::m2_syn::Token for _TldEql {
6024    const SPELLING: &'static str = "~=";
6025    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6026        match token {
6027            ::m2_syn::TokenTree::Punct(token) => token.text() == "~=",
6028            _ => false,
6029        }
6030    }
6031    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6032        Self::matches_token_tree(&token).then_some(Self {
6033            raw: ::std::boxed::Box::new(token),
6034        })
6035    }
6036}
6037impl ::m2_syn::Parse for _TldEql {
6038    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
6039        input.parse_token()
6040    }
6041}
6042impl ::m2_syn::ToTokens for _TldEql {
6043    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
6044        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
6045    }
6046}
6047impl ::m2_syn::PrettyTree for _TldEql {
6048    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
6049        ::m2_syn::PrettyNode::token(
6050            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
6051            <Self as ::m2_syn::Token>::SPELLING,
6052            ::m2_syn::Spanned::span(self),
6053        )
6054    }
6055}
6056impl<N> ::m2_syn::Reconstruct<N> for _TldEql
6057where
6058    N: ::m2_syn::ExternalCstNode,
6059{
6060    fn matches(node: &N) -> bool {
6061        node.identity().matches("~=", false)
6062    }
6063    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6064        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6065            return Err(::m2_syn::ReconstructError::wrong_node(
6066                "~=",
6067                false,
6068                node.identity(),
6069            ));
6070        }
6071        Ok(_TldEql(node.span()))
6072    }
6073}
6074#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6075pub struct _Cdt {
6076    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6077}
6078#[doc(hidden)]
6079#[allow(non_snake_case)]
6080pub fn _Cdt<S: ::m2_syn::Spanned>(span: S) -> _Cdt {
6081    let span = span.span();
6082    _Cdt {
6083        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("·", span))),
6084    }
6085}
6086impl ::m2_syn::Token for _Cdt {
6087    const SPELLING: &'static str = "·";
6088    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6089        match token {
6090            ::m2_syn::TokenTree::Punct(token) => token.text() == "·",
6091            _ => false,
6092        }
6093    }
6094    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6095        Self::matches_token_tree(&token).then_some(Self {
6096            raw: ::std::boxed::Box::new(token),
6097        })
6098    }
6099}
6100impl ::m2_syn::Parse for _Cdt {
6101    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
6102        input.parse_token()
6103    }
6104}
6105impl ::m2_syn::ToTokens for _Cdt {
6106    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
6107        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
6108    }
6109}
6110impl ::m2_syn::PrettyTree for _Cdt {
6111    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
6112        ::m2_syn::PrettyNode::token(
6113            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
6114            <Self as ::m2_syn::Token>::SPELLING,
6115            ::m2_syn::Spanned::span(self),
6116        )
6117    }
6118}
6119impl<N> ::m2_syn::Reconstruct<N> for _Cdt
6120where
6121    N: ::m2_syn::ExternalCstNode,
6122{
6123    fn matches(node: &N) -> bool {
6124        node.identity().matches("·", false)
6125    }
6126    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6127        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6128            return Err(::m2_syn::ReconstructError::wrong_node(
6129                "·",
6130                false,
6131                node.identity(),
6132            ));
6133        }
6134        Ok(_Cdt(node.span()))
6135    }
6136}
6137#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6138pub struct _CdtEql {
6139    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6140}
6141#[doc(hidden)]
6142#[allow(non_snake_case)]
6143pub fn _CdtEql<S: ::m2_syn::Spanned>(span: S) -> _CdtEql {
6144    let span = span.span();
6145    _CdtEql {
6146        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("·=", span))),
6147    }
6148}
6149impl ::m2_syn::Token for _CdtEql {
6150    const SPELLING: &'static str = "·=";
6151    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6152        match token {
6153            ::m2_syn::TokenTree::Punct(token) => token.text() == "·=",
6154            _ => false,
6155        }
6156    }
6157    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6158        Self::matches_token_tree(&token).then_some(Self {
6159            raw: ::std::boxed::Box::new(token),
6160        })
6161    }
6162}
6163impl ::m2_syn::Parse for _CdtEql {
6164    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
6165        input.parse_token()
6166    }
6167}
6168impl ::m2_syn::ToTokens for _CdtEql {
6169    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
6170        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
6171    }
6172}
6173impl ::m2_syn::PrettyTree for _CdtEql {
6174    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
6175        ::m2_syn::PrettyNode::token(
6176            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
6177            <Self as ::m2_syn::Token>::SPELLING,
6178            ::m2_syn::Spanned::span(self),
6179        )
6180    }
6181}
6182impl<N> ::m2_syn::Reconstruct<N> for _CdtEql
6183where
6184    N: ::m2_syn::ExternalCstNode,
6185{
6186    fn matches(node: &N) -> bool {
6187        node.identity().matches("·=", false)
6188    }
6189    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6190        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6191            return Err(::m2_syn::ReconstructError::wrong_node(
6192                "·=",
6193                false,
6194                node.identity(),
6195            ));
6196        }
6197        Ok(_CdtEql(node.span()))
6198    }
6199}
6200#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6201pub struct _Box {
6202    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6203}
6204#[doc(hidden)]
6205#[allow(non_snake_case)]
6206pub fn _Box<S: ::m2_syn::Spanned>(span: S) -> _Box {
6207    let span = span.span();
6208    _Box {
6209        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("⊠", span))),
6210    }
6211}
6212impl ::m2_syn::Token for _Box {
6213    const SPELLING: &'static str = "⊠";
6214    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6215        match token {
6216            ::m2_syn::TokenTree::Punct(token) => token.text() == "⊠",
6217            _ => false,
6218        }
6219    }
6220    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6221        Self::matches_token_tree(&token).then_some(Self {
6222            raw: ::std::boxed::Box::new(token),
6223        })
6224    }
6225}
6226impl ::m2_syn::Parse for _Box {
6227    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
6228        input.parse_token()
6229    }
6230}
6231impl ::m2_syn::ToTokens for _Box {
6232    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
6233        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
6234    }
6235}
6236impl ::m2_syn::PrettyTree for _Box {
6237    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
6238        ::m2_syn::PrettyNode::token(
6239            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
6240            <Self as ::m2_syn::Token>::SPELLING,
6241            ::m2_syn::Spanned::span(self),
6242        )
6243    }
6244}
6245impl<N> ::m2_syn::Reconstruct<N> for _Box
6246where
6247    N: ::m2_syn::ExternalCstNode,
6248{
6249    fn matches(node: &N) -> bool {
6250        node.identity().matches("⊠", false)
6251    }
6252    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6253        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6254            return Err(::m2_syn::ReconstructError::wrong_node(
6255                "⊠",
6256                false,
6257                node.identity(),
6258            ));
6259        }
6260        Ok(_Box(node.span()))
6261    }
6262}
6263#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6264pub struct _BoxEql {
6265    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6266}
6267#[doc(hidden)]
6268#[allow(non_snake_case)]
6269pub fn _BoxEql<S: ::m2_syn::Spanned>(span: S) -> _BoxEql {
6270    let span = span.span();
6271    _BoxEql {
6272        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("⊠=", span))),
6273    }
6274}
6275impl ::m2_syn::Token for _BoxEql {
6276    const SPELLING: &'static str = "⊠=";
6277    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6278        match token {
6279            ::m2_syn::TokenTree::Punct(token) => token.text() == "⊠=",
6280            _ => false,
6281        }
6282    }
6283    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6284        Self::matches_token_tree(&token).then_some(Self {
6285            raw: ::std::boxed::Box::new(token),
6286        })
6287    }
6288}
6289impl ::m2_syn::Parse for _BoxEql {
6290    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
6291        input.parse_token()
6292    }
6293}
6294impl ::m2_syn::ToTokens for _BoxEql {
6295    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
6296        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
6297    }
6298}
6299impl ::m2_syn::PrettyTree for _BoxEql {
6300    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
6301        ::m2_syn::PrettyNode::token(
6302            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
6303            <Self as ::m2_syn::Token>::SPELLING,
6304            ::m2_syn::Spanned::span(self),
6305        )
6306    }
6307}
6308impl<N> ::m2_syn::Reconstruct<N> for _BoxEql
6309where
6310    N: ::m2_syn::ExternalCstNode,
6311{
6312    fn matches(node: &N) -> bool {
6313        node.identity().matches("⊠=", false)
6314    }
6315    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6316        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6317            return Err(::m2_syn::ReconstructError::wrong_node(
6318                "⊠=",
6319                false,
6320                node.identity(),
6321            ));
6322        }
6323        Ok(_BoxEql(node.span()))
6324    }
6325}
6326#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6327pub struct _Sfp {
6328    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6329}
6330#[doc(hidden)]
6331#[allow(non_snake_case)]
6332pub fn _Sfp<S: ::m2_syn::Spanned>(span: S) -> _Sfp {
6333    let span = span.span();
6334    _Sfp {
6335        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("⧢", span))),
6336    }
6337}
6338impl ::m2_syn::Token for _Sfp {
6339    const SPELLING: &'static str = "⧢";
6340    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6341        match token {
6342            ::m2_syn::TokenTree::Punct(token) => token.text() == "⧢",
6343            _ => false,
6344        }
6345    }
6346    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6347        Self::matches_token_tree(&token).then_some(Self {
6348            raw: ::std::boxed::Box::new(token),
6349        })
6350    }
6351}
6352impl ::m2_syn::Parse for _Sfp {
6353    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
6354        input.parse_token()
6355    }
6356}
6357impl ::m2_syn::ToTokens for _Sfp {
6358    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
6359        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
6360    }
6361}
6362impl ::m2_syn::PrettyTree for _Sfp {
6363    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
6364        ::m2_syn::PrettyNode::token(
6365            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
6366            <Self as ::m2_syn::Token>::SPELLING,
6367            ::m2_syn::Spanned::span(self),
6368        )
6369    }
6370}
6371impl<N> ::m2_syn::Reconstruct<N> for _Sfp
6372where
6373    N: ::m2_syn::ExternalCstNode,
6374{
6375    fn matches(node: &N) -> bool {
6376        node.identity().matches("⧢", false)
6377    }
6378    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6379        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6380            return Err(::m2_syn::ReconstructError::wrong_node(
6381                "⧢",
6382                false,
6383                node.identity(),
6384            ));
6385        }
6386        Ok(_Sfp(node.span()))
6387    }
6388}
6389#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6390pub struct _SfpEql {
6391    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6392}
6393#[doc(hidden)]
6394#[allow(non_snake_case)]
6395pub fn _SfpEql<S: ::m2_syn::Spanned>(span: S) -> _SfpEql {
6396    let span = span.span();
6397    _SfpEql {
6398        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("⧢=", span))),
6399    }
6400}
6401impl ::m2_syn::Token for _SfpEql {
6402    const SPELLING: &'static str = "⧢=";
6403    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6404        match token {
6405            ::m2_syn::TokenTree::Punct(token) => token.text() == "⧢=",
6406            _ => false,
6407        }
6408    }
6409    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6410        Self::matches_token_tree(&token).then_some(Self {
6411            raw: ::std::boxed::Box::new(token),
6412        })
6413    }
6414}
6415impl ::m2_syn::Parse for _SfpEql {
6416    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
6417        input.parse_token()
6418    }
6419}
6420impl ::m2_syn::ToTokens for _SfpEql {
6421    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
6422        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
6423    }
6424}
6425impl ::m2_syn::PrettyTree for _SfpEql {
6426    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
6427        ::m2_syn::PrettyNode::token(
6428            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
6429            <Self as ::m2_syn::Token>::SPELLING,
6430            ::m2_syn::Spanned::span(self),
6431        )
6432    }
6433}
6434impl<N> ::m2_syn::Reconstruct<N> for _SfpEql
6435where
6436    N: ::m2_syn::ExternalCstNode,
6437{
6438    fn matches(node: &N) -> bool {
6439        node.identity().matches("⧢=", false)
6440    }
6441    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6442        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6443            return Err(::m2_syn::ReconstructError::wrong_node(
6444                "⧢=",
6445                false,
6446                node.identity(),
6447            ));
6448        }
6449        Ok(_SfpEql(node.span()))
6450    }
6451}
6452#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6453pub struct _And {
6454    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6455}
6456#[doc(hidden)]
6457#[allow(non_snake_case)]
6458pub fn _And<S: ::m2_syn::Spanned>(span: S) -> _And {
6459    let span = span.span();
6460    _And {
6461        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
6462            "and", span,
6463        ))),
6464    }
6465}
6466impl ::m2_syn::Token for _And {
6467    const SPELLING: &'static str = "and";
6468    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6469        match token {
6470            ::m2_syn::TokenTree::Ident(token) => {
6471                token.text() == "and" || token.text().strip_prefix("Core$") == Some("and")
6472            }
6473            _ => false,
6474        }
6475    }
6476    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6477        Self::matches_token_tree(&token).then_some(Self {
6478            raw: ::std::boxed::Box::new(token),
6479        })
6480    }
6481}
6482impl ::m2_syn::Parse for _And {
6483    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
6484        input.parse_token()
6485    }
6486}
6487impl ::m2_syn::ToTokens for _And {
6488    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
6489        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
6490    }
6491}
6492impl ::m2_syn::PrettyTree for _And {
6493    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
6494        ::m2_syn::PrettyNode::token(
6495            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
6496            <Self as ::m2_syn::Token>::SPELLING,
6497            ::m2_syn::Spanned::span(self),
6498        )
6499    }
6500}
6501impl<N> ::m2_syn::Reconstruct<N> for _And
6502where
6503    N: ::m2_syn::ExternalCstNode,
6504{
6505    fn matches(node: &N) -> bool {
6506        node.identity().matches("and", false)
6507    }
6508    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6509        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6510            return Err(::m2_syn::ReconstructError::wrong_node(
6511                "and",
6512                false,
6513                node.identity(),
6514            ));
6515        }
6516        Ok(_And(node.span()))
6517    }
6518}
6519#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6520pub struct _Or {
6521    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6522}
6523#[doc(hidden)]
6524#[allow(non_snake_case)]
6525pub fn _Or<S: ::m2_syn::Spanned>(span: S) -> _Or {
6526    let span = span.span();
6527    _Or {
6528        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
6529            "or", span,
6530        ))),
6531    }
6532}
6533impl ::m2_syn::Token for _Or {
6534    const SPELLING: &'static str = "or";
6535    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6536        match token {
6537            ::m2_syn::TokenTree::Ident(token) => {
6538                token.text() == "or" || token.text().strip_prefix("Core$") == Some("or")
6539            }
6540            _ => false,
6541        }
6542    }
6543    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6544        Self::matches_token_tree(&token).then_some(Self {
6545            raw: ::std::boxed::Box::new(token),
6546        })
6547    }
6548}
6549impl ::m2_syn::Parse for _Or {
6550    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
6551        input.parse_token()
6552    }
6553}
6554impl ::m2_syn::ToTokens for _Or {
6555    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
6556        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
6557    }
6558}
6559impl ::m2_syn::PrettyTree for _Or {
6560    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
6561        ::m2_syn::PrettyNode::token(
6562            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
6563            <Self as ::m2_syn::Token>::SPELLING,
6564            ::m2_syn::Spanned::span(self),
6565        )
6566    }
6567}
6568impl<N> ::m2_syn::Reconstruct<N> for _Or
6569where
6570    N: ::m2_syn::ExternalCstNode,
6571{
6572    fn matches(node: &N) -> bool {
6573        node.identity().matches("or", false)
6574    }
6575    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6576        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6577            return Err(::m2_syn::ReconstructError::wrong_node(
6578                "or",
6579                false,
6580                node.identity(),
6581            ));
6582        }
6583        Ok(_Or(node.span()))
6584    }
6585}
6586#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6587pub struct _Space {
6588    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6589}
6590#[doc(hidden)]
6591#[allow(non_snake_case)]
6592pub fn _Space<S: ::m2_syn::Spanned>(span: S) -> _Space {
6593    let span = span.span();
6594    _Space {
6595        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Trivia(::m2_syn::Trivia::new(
6596            ::m2_syn::TriviaKind::Whitespace,
6597            " ",
6598            span,
6599        ))),
6600    }
6601}
6602impl ::m2_syn::Token for _Space {
6603    const SPELLING: &'static str = "SPACE";
6604    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6605        match token {
6606            ::m2_syn::TokenTree::Trivia(token) => {
6607                token.kind() == ::m2_syn::TriviaKind::Whitespace && !token.contains_line_break()
6608            }
6609            ::m2_syn::TokenTree::Ident(token) => token.text() == "SPACE",
6610            _ => false,
6611        }
6612    }
6613    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6614        Self::matches_token_tree(&token).then_some(Self {
6615            raw: ::std::boxed::Box::new(token),
6616        })
6617    }
6618}
6619impl ::m2_syn::Parse for _Space {
6620    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
6621        input.parse_token()
6622    }
6623}
6624impl ::m2_syn::ToTokens for _Space {
6625    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
6626        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
6627    }
6628}
6629impl ::m2_syn::PrettyTree for _Space {
6630    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
6631        ::m2_syn::PrettyNode::token(
6632            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
6633            <Self as ::m2_syn::Token>::SPELLING,
6634            ::m2_syn::Spanned::span(self),
6635        )
6636    }
6637}
6638impl<N> ::m2_syn::Reconstruct<N> for _Space
6639where
6640    N: ::m2_syn::ExternalCstNode,
6641{
6642    fn matches(node: &N) -> bool {
6643        node.identity().matches("SPACE", false)
6644    }
6645    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6646        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6647            return Err(::m2_syn::ReconstructError::wrong_node(
6648                "SPACE",
6649                false,
6650                node.identity(),
6651            ));
6652        }
6653        Ok(_Space(node.span()))
6654    }
6655}
6656#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6657pub struct _Xor {
6658    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6659}
6660#[doc(hidden)]
6661#[allow(non_snake_case)]
6662pub fn _Xor<S: ::m2_syn::Spanned>(span: S) -> _Xor {
6663    let span = span.span();
6664    _Xor {
6665        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
6666            "xor", span,
6667        ))),
6668    }
6669}
6670impl ::m2_syn::Token for _Xor {
6671    const SPELLING: &'static str = "xor";
6672    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6673        match token {
6674            ::m2_syn::TokenTree::Ident(token) => {
6675                token.text() == "xor" || token.text().strip_prefix("Core$") == Some("xor")
6676            }
6677            _ => false,
6678        }
6679    }
6680    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6681        Self::matches_token_tree(&token).then_some(Self {
6682            raw: ::std::boxed::Box::new(token),
6683        })
6684    }
6685}
6686impl ::m2_syn::Parse for _Xor {
6687    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
6688        input.parse_token()
6689    }
6690}
6691impl ::m2_syn::ToTokens for _Xor {
6692    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
6693        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
6694    }
6695}
6696impl ::m2_syn::PrettyTree for _Xor {
6697    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
6698        ::m2_syn::PrettyNode::token(
6699            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
6700            <Self as ::m2_syn::Token>::SPELLING,
6701            ::m2_syn::Spanned::span(self),
6702        )
6703    }
6704}
6705impl<N> ::m2_syn::Reconstruct<N> for _Xor
6706where
6707    N: ::m2_syn::ExternalCstNode,
6708{
6709    fn matches(node: &N) -> bool {
6710        node.identity().matches("xor", false)
6711    }
6712    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6713        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6714            return Err(::m2_syn::ReconstructError::wrong_node(
6715                "xor",
6716                false,
6717                node.identity(),
6718            ));
6719        }
6720        Ok(_Xor(node.span()))
6721    }
6722}
6723#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6724pub struct _Bng {
6725    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6726}
6727#[doc(hidden)]
6728#[allow(non_snake_case)]
6729pub fn _Bng<S: ::m2_syn::Spanned>(span: S) -> _Bng {
6730    let span = span.span();
6731    _Bng {
6732        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("!", span))),
6733    }
6734}
6735impl ::m2_syn::Token for _Bng {
6736    const SPELLING: &'static str = "!";
6737    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6738        match token {
6739            ::m2_syn::TokenTree::Punct(token) => token.text() == "!",
6740            _ => false,
6741        }
6742    }
6743    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6744        Self::matches_token_tree(&token).then_some(Self {
6745            raw: ::std::boxed::Box::new(token),
6746        })
6747    }
6748}
6749impl ::m2_syn::Parse for _Bng {
6750    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
6751        input.parse_token()
6752    }
6753}
6754impl ::m2_syn::ToTokens for _Bng {
6755    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
6756        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
6757    }
6758}
6759impl ::m2_syn::PrettyTree for _Bng {
6760    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
6761        ::m2_syn::PrettyNode::token(
6762            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
6763            <Self as ::m2_syn::Token>::SPELLING,
6764            ::m2_syn::Spanned::span(self),
6765        )
6766    }
6767}
6768impl<N> ::m2_syn::Reconstruct<N> for _Bng
6769where
6770    N: ::m2_syn::ExternalCstNode,
6771{
6772    fn matches(node: &N) -> bool {
6773        node.identity().matches("!", false)
6774    }
6775    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6776        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6777            return Err(::m2_syn::ReconstructError::wrong_node(
6778                "!",
6779                false,
6780                node.identity(),
6781            ));
6782        }
6783        Ok(_Bng(node.span()))
6784    }
6785}
6786#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6787pub struct _Graded {
6788    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6789}
6790#[doc(hidden)]
6791#[allow(non_snake_case)]
6792pub fn _Graded<S: ::m2_syn::Spanned>(span: S) -> _Graded {
6793    let span = span.span();
6794    _Graded {
6795        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(
6796            "(*)", span,
6797        ))),
6798    }
6799}
6800impl ::m2_syn::Token for _Graded {
6801    const SPELLING: &'static str = "(*)";
6802    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6803        match token {
6804            ::m2_syn::TokenTree::Punct(token) => token.text() == "(*)",
6805            _ => false,
6806        }
6807    }
6808    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6809        Self::matches_token_tree(&token).then_some(Self {
6810            raw: ::std::boxed::Box::new(token),
6811        })
6812    }
6813}
6814impl ::m2_syn::Parse for _Graded {
6815    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
6816        input.parse_token()
6817    }
6818}
6819impl ::m2_syn::ToTokens for _Graded {
6820    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
6821        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
6822    }
6823}
6824impl ::m2_syn::PrettyTree for _Graded {
6825    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
6826        ::m2_syn::PrettyNode::token(
6827            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
6828            <Self as ::m2_syn::Token>::SPELLING,
6829            ::m2_syn::Spanned::span(self),
6830        )
6831    }
6832}
6833impl<N> ::m2_syn::Reconstruct<N> for _Graded
6834where
6835    N: ::m2_syn::ExternalCstNode,
6836{
6837    fn matches(node: &N) -> bool {
6838        node.identity().matches("(*)", false)
6839    }
6840    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6841        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6842            return Err(::m2_syn::ReconstructError::wrong_node(
6843                "(*)",
6844                false,
6845                node.identity(),
6846            ));
6847        }
6848        Ok(_Graded(node.span()))
6849    }
6850}
6851#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6852pub struct _CrtBng {
6853    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6854}
6855#[doc(hidden)]
6856#[allow(non_snake_case)]
6857pub fn _CrtBng<S: ::m2_syn::Spanned>(span: S) -> _CrtBng {
6858    let span = span.span();
6859    _CrtBng {
6860        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("^!", span))),
6861    }
6862}
6863impl ::m2_syn::Token for _CrtBng {
6864    const SPELLING: &'static str = "^!";
6865    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6866        match token {
6867            ::m2_syn::TokenTree::Punct(token) => token.text() == "^!",
6868            _ => false,
6869        }
6870    }
6871    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6872        Self::matches_token_tree(&token).then_some(Self {
6873            raw: ::std::boxed::Box::new(token),
6874        })
6875    }
6876}
6877impl ::m2_syn::Parse for _CrtBng {
6878    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
6879        input.parse_token()
6880    }
6881}
6882impl ::m2_syn::ToTokens for _CrtBng {
6883    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
6884        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
6885    }
6886}
6887impl ::m2_syn::PrettyTree for _CrtBng {
6888    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
6889        ::m2_syn::PrettyNode::token(
6890            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
6891            <Self as ::m2_syn::Token>::SPELLING,
6892            ::m2_syn::Spanned::span(self),
6893        )
6894    }
6895}
6896impl<N> ::m2_syn::Reconstruct<N> for _CrtBng
6897where
6898    N: ::m2_syn::ExternalCstNode,
6899{
6900    fn matches(node: &N) -> bool {
6901        node.identity().matches("^!", false)
6902    }
6903    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6904        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6905            return Err(::m2_syn::ReconstructError::wrong_node(
6906                "^!",
6907                false,
6908                node.identity(),
6909            ));
6910        }
6911        Ok(_CrtBng(node.span()))
6912    }
6913}
6914#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6915pub struct _CrtMul {
6916    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6917}
6918#[doc(hidden)]
6919#[allow(non_snake_case)]
6920pub fn _CrtMul<S: ::m2_syn::Spanned>(span: S) -> _CrtMul {
6921    let span = span.span();
6922    _CrtMul {
6923        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("^*", span))),
6924    }
6925}
6926impl ::m2_syn::Token for _CrtMul {
6927    const SPELLING: &'static str = "^*";
6928    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6929        match token {
6930            ::m2_syn::TokenTree::Punct(token) => token.text() == "^*",
6931            _ => false,
6932        }
6933    }
6934    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6935        Self::matches_token_tree(&token).then_some(Self {
6936            raw: ::std::boxed::Box::new(token),
6937        })
6938    }
6939}
6940impl ::m2_syn::Parse for _CrtMul {
6941    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
6942        input.parse_token()
6943    }
6944}
6945impl ::m2_syn::ToTokens for _CrtMul {
6946    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
6947        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
6948    }
6949}
6950impl ::m2_syn::PrettyTree for _CrtMul {
6951    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
6952        ::m2_syn::PrettyNode::token(
6953            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
6954            <Self as ::m2_syn::Token>::SPELLING,
6955            ::m2_syn::Spanned::span(self),
6956        )
6957    }
6958}
6959impl<N> ::m2_syn::Reconstruct<N> for _CrtMul
6960where
6961    N: ::m2_syn::ExternalCstNode,
6962{
6963    fn matches(node: &N) -> bool {
6964        node.identity().matches("^*", false)
6965    }
6966    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
6967        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
6968            return Err(::m2_syn::ReconstructError::wrong_node(
6969                "^*",
6970                false,
6971                node.identity(),
6972            ));
6973        }
6974        Ok(_CrtMul(node.span()))
6975    }
6976}
6977#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
6978pub struct _CrtTld {
6979    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
6980}
6981#[doc(hidden)]
6982#[allow(non_snake_case)]
6983pub fn _CrtTld<S: ::m2_syn::Spanned>(span: S) -> _CrtTld {
6984    let span = span.span();
6985    _CrtTld {
6986        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("^~", span))),
6987    }
6988}
6989impl ::m2_syn::Token for _CrtTld {
6990    const SPELLING: &'static str = "^~";
6991    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
6992        match token {
6993            ::m2_syn::TokenTree::Punct(token) => token.text() == "^~",
6994            _ => false,
6995        }
6996    }
6997    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
6998        Self::matches_token_tree(&token).then_some(Self {
6999            raw: ::std::boxed::Box::new(token),
7000        })
7001    }
7002}
7003impl ::m2_syn::Parse for _CrtTld {
7004    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
7005        input.parse_token()
7006    }
7007}
7008impl ::m2_syn::ToTokens for _CrtTld {
7009    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
7010        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
7011    }
7012}
7013impl ::m2_syn::PrettyTree for _CrtTld {
7014    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
7015        ::m2_syn::PrettyNode::token(
7016            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
7017            <Self as ::m2_syn::Token>::SPELLING,
7018            ::m2_syn::Spanned::span(self),
7019        )
7020    }
7021}
7022impl<N> ::m2_syn::Reconstruct<N> for _CrtTld
7023where
7024    N: ::m2_syn::ExternalCstNode,
7025{
7026    fn matches(node: &N) -> bool {
7027        node.identity().matches("^~", false)
7028    }
7029    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
7030        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
7031            return Err(::m2_syn::ReconstructError::wrong_node(
7032                "^~",
7033                false,
7034                node.identity(),
7035            ));
7036        }
7037        Ok(_CrtTld(node.span()))
7038    }
7039}
7040#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
7041pub struct _UbsBng {
7042    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
7043}
7044#[doc(hidden)]
7045#[allow(non_snake_case)]
7046pub fn _UbsBng<S: ::m2_syn::Spanned>(span: S) -> _UbsBng {
7047    let span = span.span();
7048    _UbsBng {
7049        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("_!", span))),
7050    }
7051}
7052impl ::m2_syn::Token for _UbsBng {
7053    const SPELLING: &'static str = "_!";
7054    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
7055        match token {
7056            ::m2_syn::TokenTree::Punct(token) => token.text() == "_!",
7057            _ => false,
7058        }
7059    }
7060    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
7061        Self::matches_token_tree(&token).then_some(Self {
7062            raw: ::std::boxed::Box::new(token),
7063        })
7064    }
7065}
7066impl ::m2_syn::Parse for _UbsBng {
7067    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
7068        input.parse_token()
7069    }
7070}
7071impl ::m2_syn::ToTokens for _UbsBng {
7072    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
7073        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
7074    }
7075}
7076impl ::m2_syn::PrettyTree for _UbsBng {
7077    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
7078        ::m2_syn::PrettyNode::token(
7079            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
7080            <Self as ::m2_syn::Token>::SPELLING,
7081            ::m2_syn::Spanned::span(self),
7082        )
7083    }
7084}
7085impl<N> ::m2_syn::Reconstruct<N> for _UbsBng
7086where
7087    N: ::m2_syn::ExternalCstNode,
7088{
7089    fn matches(node: &N) -> bool {
7090        node.identity().matches("_!", false)
7091    }
7092    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
7093        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
7094            return Err(::m2_syn::ReconstructError::wrong_node(
7095                "_!",
7096                false,
7097                node.identity(),
7098            ));
7099        }
7100        Ok(_UbsBng(node.span()))
7101    }
7102}
7103#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
7104pub struct _UbsMul {
7105    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
7106}
7107#[doc(hidden)]
7108#[allow(non_snake_case)]
7109pub fn _UbsMul<S: ::m2_syn::Spanned>(span: S) -> _UbsMul {
7110    let span = span.span();
7111    _UbsMul {
7112        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("_*", span))),
7113    }
7114}
7115impl ::m2_syn::Token for _UbsMul {
7116    const SPELLING: &'static str = "_*";
7117    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
7118        match token {
7119            ::m2_syn::TokenTree::Punct(token) => token.text() == "_*",
7120            _ => false,
7121        }
7122    }
7123    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
7124        Self::matches_token_tree(&token).then_some(Self {
7125            raw: ::std::boxed::Box::new(token),
7126        })
7127    }
7128}
7129impl ::m2_syn::Parse for _UbsMul {
7130    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
7131        input.parse_token()
7132    }
7133}
7134impl ::m2_syn::ToTokens for _UbsMul {
7135    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
7136        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
7137    }
7138}
7139impl ::m2_syn::PrettyTree for _UbsMul {
7140    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
7141        ::m2_syn::PrettyNode::token(
7142            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
7143            <Self as ::m2_syn::Token>::SPELLING,
7144            ::m2_syn::Spanned::span(self),
7145        )
7146    }
7147}
7148impl<N> ::m2_syn::Reconstruct<N> for _UbsMul
7149where
7150    N: ::m2_syn::ExternalCstNode,
7151{
7152    fn matches(node: &N) -> bool {
7153        node.identity().matches("_*", false)
7154    }
7155    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
7156        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
7157            return Err(::m2_syn::ReconstructError::wrong_node(
7158                "_*",
7159                false,
7160                node.identity(),
7161            ));
7162        }
7163        Ok(_UbsMul(node.span()))
7164    }
7165}
7166#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
7167pub struct _UbsTld {
7168    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
7169}
7170#[doc(hidden)]
7171#[allow(non_snake_case)]
7172pub fn _UbsTld<S: ::m2_syn::Spanned>(span: S) -> _UbsTld {
7173    let span = span.span();
7174    _UbsTld {
7175        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new("_~", span))),
7176    }
7177}
7178impl ::m2_syn::Token for _UbsTld {
7179    const SPELLING: &'static str = "_~";
7180    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
7181        match token {
7182            ::m2_syn::TokenTree::Punct(token) => token.text() == "_~",
7183            _ => false,
7184        }
7185    }
7186    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
7187        Self::matches_token_tree(&token).then_some(Self {
7188            raw: ::std::boxed::Box::new(token),
7189        })
7190    }
7191}
7192impl ::m2_syn::Parse for _UbsTld {
7193    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
7194        input.parse_token()
7195    }
7196}
7197impl ::m2_syn::ToTokens for _UbsTld {
7198    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
7199        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
7200    }
7201}
7202impl ::m2_syn::PrettyTree for _UbsTld {
7203    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
7204        ::m2_syn::PrettyNode::token(
7205            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
7206            <Self as ::m2_syn::Token>::SPELLING,
7207            ::m2_syn::Spanned::span(self),
7208        )
7209    }
7210}
7211impl<N> ::m2_syn::Reconstruct<N> for _UbsTld
7212where
7213    N: ::m2_syn::ExternalCstNode,
7214{
7215    fn matches(node: &N) -> bool {
7216        node.identity().matches("_~", false)
7217    }
7218    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
7219        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
7220            return Err(::m2_syn::ReconstructError::wrong_node(
7221                "_~",
7222                false,
7223                node.identity(),
7224            ));
7225        }
7226        Ok(_UbsTld(node.span()))
7227    }
7228}
7229#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
7230pub struct _Not {
7231    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
7232}
7233#[doc(hidden)]
7234#[allow(non_snake_case)]
7235pub fn _Not<S: ::m2_syn::Spanned>(span: S) -> _Not {
7236    let span = span.span();
7237    _Not {
7238        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
7239            "not", span,
7240        ))),
7241    }
7242}
7243impl ::m2_syn::Token for _Not {
7244    const SPELLING: &'static str = "not";
7245    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
7246        match token {
7247            ::m2_syn::TokenTree::Ident(token) => {
7248                token.text() == "not" || token.text().strip_prefix("Core$") == Some("not")
7249            }
7250            _ => false,
7251        }
7252    }
7253    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
7254        Self::matches_token_tree(&token).then_some(Self {
7255            raw: ::std::boxed::Box::new(token),
7256        })
7257    }
7258}
7259impl ::m2_syn::Parse for _Not {
7260    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
7261        input.parse_token()
7262    }
7263}
7264impl ::m2_syn::ToTokens for _Not {
7265    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
7266        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
7267    }
7268}
7269impl ::m2_syn::PrettyTree for _Not {
7270    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
7271        ::m2_syn::PrettyNode::token(
7272            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
7273            <Self as ::m2_syn::Token>::SPELLING,
7274            ::m2_syn::Spanned::span(self),
7275        )
7276    }
7277}
7278impl<N> ::m2_syn::Reconstruct<N> for _Not
7279where
7280    N: ::m2_syn::ExternalCstNode,
7281{
7282    fn matches(node: &N) -> bool {
7283        node.identity().matches("not", false)
7284    }
7285    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
7286        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
7287            return Err(::m2_syn::ReconstructError::wrong_node(
7288                "not",
7289                false,
7290                node.identity(),
7291            ));
7292        }
7293        Ok(_Not(node.span()))
7294    }
7295}
7296#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
7297pub struct _BreakKeyword {
7298    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
7299}
7300#[doc(hidden)]
7301#[allow(non_snake_case)]
7302pub fn _BreakKeyword<S: ::m2_syn::Spanned>(span: S) -> _BreakKeyword {
7303    let span = span.span();
7304    _BreakKeyword {
7305        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
7306            "break", span,
7307        ))),
7308    }
7309}
7310impl ::m2_syn::Token for _BreakKeyword {
7311    const SPELLING: &'static str = "break";
7312    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
7313        match token {
7314            ::m2_syn::TokenTree::Ident(token) => {
7315                token.text() == "break" || token.text().strip_prefix("Core$") == Some("break")
7316            }
7317            _ => false,
7318        }
7319    }
7320    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
7321        Self::matches_token_tree(&token).then_some(Self {
7322            raw: ::std::boxed::Box::new(token),
7323        })
7324    }
7325}
7326impl ::m2_syn::Parse for _BreakKeyword {
7327    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
7328        input.parse_token()
7329    }
7330}
7331impl ::m2_syn::ToTokens for _BreakKeyword {
7332    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
7333        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
7334    }
7335}
7336impl ::m2_syn::PrettyTree for _BreakKeyword {
7337    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
7338        ::m2_syn::PrettyNode::token(
7339            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
7340            <Self as ::m2_syn::Token>::SPELLING,
7341            ::m2_syn::Spanned::span(self),
7342        )
7343    }
7344}
7345impl<N> ::m2_syn::Reconstruct<N> for _BreakKeyword
7346where
7347    N: ::m2_syn::ExternalCstNode,
7348{
7349    fn matches(node: &N) -> bool {
7350        node.identity().matches("break", false)
7351    }
7352    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
7353        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
7354            return Err(::m2_syn::ReconstructError::wrong_node(
7355                "break",
7356                false,
7357                node.identity(),
7358            ));
7359        }
7360        Ok(_BreakKeyword(node.span()))
7361    }
7362}
7363#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
7364pub struct _BreakpointKeyword {
7365    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
7366}
7367#[doc(hidden)]
7368#[allow(non_snake_case)]
7369pub fn _BreakpointKeyword<S: ::m2_syn::Spanned>(span: S) -> _BreakpointKeyword {
7370    let span = span.span();
7371    _BreakpointKeyword {
7372        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
7373            "breakpoint",
7374            span,
7375        ))),
7376    }
7377}
7378impl ::m2_syn::Token for _BreakpointKeyword {
7379    const SPELLING: &'static str = "breakpoint";
7380    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
7381        match token {
7382            ::m2_syn::TokenTree::Ident(token) => {
7383                token.text() == "breakpoint"
7384                    || token.text().strip_prefix("Core$") == Some("breakpoint")
7385            }
7386            _ => false,
7387        }
7388    }
7389    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
7390        Self::matches_token_tree(&token).then_some(Self {
7391            raw: ::std::boxed::Box::new(token),
7392        })
7393    }
7394}
7395impl ::m2_syn::Parse for _BreakpointKeyword {
7396    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
7397        input.parse_token()
7398    }
7399}
7400impl ::m2_syn::ToTokens for _BreakpointKeyword {
7401    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
7402        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
7403    }
7404}
7405impl ::m2_syn::PrettyTree for _BreakpointKeyword {
7406    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
7407        ::m2_syn::PrettyNode::token(
7408            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
7409            <Self as ::m2_syn::Token>::SPELLING,
7410            ::m2_syn::Spanned::span(self),
7411        )
7412    }
7413}
7414impl<N> ::m2_syn::Reconstruct<N> for _BreakpointKeyword
7415where
7416    N: ::m2_syn::ExternalCstNode,
7417{
7418    fn matches(node: &N) -> bool {
7419        node.identity().matches("breakpoint", false)
7420    }
7421    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
7422        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
7423            return Err(::m2_syn::ReconstructError::wrong_node(
7424                "breakpoint",
7425                false,
7426                node.identity(),
7427            ));
7428        }
7429        Ok(_BreakpointKeyword(node.span()))
7430    }
7431}
7432#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
7433pub struct _CatchKeyword {
7434    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
7435}
7436#[doc(hidden)]
7437#[allow(non_snake_case)]
7438pub fn _CatchKeyword<S: ::m2_syn::Spanned>(span: S) -> _CatchKeyword {
7439    let span = span.span();
7440    _CatchKeyword {
7441        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
7442            "catch", span,
7443        ))),
7444    }
7445}
7446impl ::m2_syn::Token for _CatchKeyword {
7447    const SPELLING: &'static str = "catch";
7448    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
7449        match token {
7450            ::m2_syn::TokenTree::Ident(token) => {
7451                token.text() == "catch" || token.text().strip_prefix("Core$") == Some("catch")
7452            }
7453            _ => false,
7454        }
7455    }
7456    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
7457        Self::matches_token_tree(&token).then_some(Self {
7458            raw: ::std::boxed::Box::new(token),
7459        })
7460    }
7461}
7462impl ::m2_syn::Parse for _CatchKeyword {
7463    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
7464        input.parse_token()
7465    }
7466}
7467impl ::m2_syn::ToTokens for _CatchKeyword {
7468    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
7469        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
7470    }
7471}
7472impl ::m2_syn::PrettyTree for _CatchKeyword {
7473    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
7474        ::m2_syn::PrettyNode::token(
7475            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
7476            <Self as ::m2_syn::Token>::SPELLING,
7477            ::m2_syn::Spanned::span(self),
7478        )
7479    }
7480}
7481impl<N> ::m2_syn::Reconstruct<N> for _CatchKeyword
7482where
7483    N: ::m2_syn::ExternalCstNode,
7484{
7485    fn matches(node: &N) -> bool {
7486        node.identity().matches("catch", false)
7487    }
7488    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
7489        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
7490            return Err(::m2_syn::ReconstructError::wrong_node(
7491                "catch",
7492                false,
7493                node.identity(),
7494            ));
7495        }
7496        Ok(_CatchKeyword(node.span()))
7497    }
7498}
7499#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
7500pub struct _ContinueKeyword {
7501    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
7502}
7503#[doc(hidden)]
7504#[allow(non_snake_case)]
7505pub fn _ContinueKeyword<S: ::m2_syn::Spanned>(span: S) -> _ContinueKeyword {
7506    let span = span.span();
7507    _ContinueKeyword {
7508        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
7509            "continue", span,
7510        ))),
7511    }
7512}
7513impl ::m2_syn::Token for _ContinueKeyword {
7514    const SPELLING: &'static str = "continue";
7515    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
7516        match token {
7517            ::m2_syn::TokenTree::Ident(token) => {
7518                token.text() == "continue" || token.text().strip_prefix("Core$") == Some("continue")
7519            }
7520            _ => false,
7521        }
7522    }
7523    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
7524        Self::matches_token_tree(&token).then_some(Self {
7525            raw: ::std::boxed::Box::new(token),
7526        })
7527    }
7528}
7529impl ::m2_syn::Parse for _ContinueKeyword {
7530    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
7531        input.parse_token()
7532    }
7533}
7534impl ::m2_syn::ToTokens for _ContinueKeyword {
7535    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
7536        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
7537    }
7538}
7539impl ::m2_syn::PrettyTree for _ContinueKeyword {
7540    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
7541        ::m2_syn::PrettyNode::token(
7542            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
7543            <Self as ::m2_syn::Token>::SPELLING,
7544            ::m2_syn::Spanned::span(self),
7545        )
7546    }
7547}
7548impl<N> ::m2_syn::Reconstruct<N> for _ContinueKeyword
7549where
7550    N: ::m2_syn::ExternalCstNode,
7551{
7552    fn matches(node: &N) -> bool {
7553        node.identity().matches("continue", false)
7554    }
7555    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
7556        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
7557            return Err(::m2_syn::ReconstructError::wrong_node(
7558                "continue",
7559                false,
7560                node.identity(),
7561            ));
7562        }
7563        Ok(_ContinueKeyword(node.span()))
7564    }
7565}
7566#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
7567pub struct _DoKeyword {
7568    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
7569}
7570#[doc(hidden)]
7571#[allow(non_snake_case)]
7572pub fn _DoKeyword<S: ::m2_syn::Spanned>(span: S) -> _DoKeyword {
7573    let span = span.span();
7574    _DoKeyword {
7575        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
7576            "do", span,
7577        ))),
7578    }
7579}
7580impl ::m2_syn::Token for _DoKeyword {
7581    const SPELLING: &'static str = "do";
7582    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
7583        match token {
7584            ::m2_syn::TokenTree::Ident(token) => {
7585                token.text() == "do" || token.text().strip_prefix("Core$") == Some("do")
7586            }
7587            _ => false,
7588        }
7589    }
7590    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
7591        Self::matches_token_tree(&token).then_some(Self {
7592            raw: ::std::boxed::Box::new(token),
7593        })
7594    }
7595}
7596impl ::m2_syn::Parse for _DoKeyword {
7597    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
7598        input.parse_token()
7599    }
7600}
7601impl ::m2_syn::ToTokens for _DoKeyword {
7602    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
7603        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
7604    }
7605}
7606impl ::m2_syn::PrettyTree for _DoKeyword {
7607    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
7608        ::m2_syn::PrettyNode::token(
7609            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
7610            <Self as ::m2_syn::Token>::SPELLING,
7611            ::m2_syn::Spanned::span(self),
7612        )
7613    }
7614}
7615impl<N> ::m2_syn::Reconstruct<N> for _DoKeyword
7616where
7617    N: ::m2_syn::ExternalCstNode,
7618{
7619    fn matches(node: &N) -> bool {
7620        node.identity().matches("do", false)
7621    }
7622    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
7623        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
7624            return Err(::m2_syn::ReconstructError::wrong_node(
7625                "do",
7626                false,
7627                node.identity(),
7628            ));
7629        }
7630        Ok(_DoKeyword(node.span()))
7631    }
7632}
7633#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
7634pub struct _ElapsedTimeKeyword {
7635    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
7636}
7637#[doc(hidden)]
7638#[allow(non_snake_case)]
7639pub fn _ElapsedTimeKeyword<S: ::m2_syn::Spanned>(span: S) -> _ElapsedTimeKeyword {
7640    let span = span.span();
7641    _ElapsedTimeKeyword {
7642        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
7643            "elapsedTime",
7644            span,
7645        ))),
7646    }
7647}
7648impl ::m2_syn::Token for _ElapsedTimeKeyword {
7649    const SPELLING: &'static str = "elapsedTime";
7650    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
7651        match token {
7652            ::m2_syn::TokenTree::Ident(token) => {
7653                token.text() == "elapsedTime"
7654                    || token.text().strip_prefix("Core$") == Some("elapsedTime")
7655            }
7656            _ => false,
7657        }
7658    }
7659    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
7660        Self::matches_token_tree(&token).then_some(Self {
7661            raw: ::std::boxed::Box::new(token),
7662        })
7663    }
7664}
7665impl ::m2_syn::Parse for _ElapsedTimeKeyword {
7666    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
7667        input.parse_token()
7668    }
7669}
7670impl ::m2_syn::ToTokens for _ElapsedTimeKeyword {
7671    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
7672        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
7673    }
7674}
7675impl ::m2_syn::PrettyTree for _ElapsedTimeKeyword {
7676    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
7677        ::m2_syn::PrettyNode::token(
7678            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
7679            <Self as ::m2_syn::Token>::SPELLING,
7680            ::m2_syn::Spanned::span(self),
7681        )
7682    }
7683}
7684impl<N> ::m2_syn::Reconstruct<N> for _ElapsedTimeKeyword
7685where
7686    N: ::m2_syn::ExternalCstNode,
7687{
7688    fn matches(node: &N) -> bool {
7689        node.identity().matches("elapsedTime", false)
7690    }
7691    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
7692        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
7693            return Err(::m2_syn::ReconstructError::wrong_node(
7694                "elapsedTime",
7695                false,
7696                node.identity(),
7697            ));
7698        }
7699        Ok(_ElapsedTimeKeyword(node.span()))
7700    }
7701}
7702#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
7703pub struct _ElapsedTimingKeyword {
7704    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
7705}
7706#[doc(hidden)]
7707#[allow(non_snake_case)]
7708pub fn _ElapsedTimingKeyword<S: ::m2_syn::Spanned>(span: S) -> _ElapsedTimingKeyword {
7709    let span = span.span();
7710    _ElapsedTimingKeyword {
7711        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
7712            "elapsedTiming",
7713            span,
7714        ))),
7715    }
7716}
7717impl ::m2_syn::Token for _ElapsedTimingKeyword {
7718    const SPELLING: &'static str = "elapsedTiming";
7719    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
7720        match token {
7721            ::m2_syn::TokenTree::Ident(token) => {
7722                token.text() == "elapsedTiming"
7723                    || token.text().strip_prefix("Core$") == Some("elapsedTiming")
7724            }
7725            _ => false,
7726        }
7727    }
7728    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
7729        Self::matches_token_tree(&token).then_some(Self {
7730            raw: ::std::boxed::Box::new(token),
7731        })
7732    }
7733}
7734impl ::m2_syn::Parse for _ElapsedTimingKeyword {
7735    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
7736        input.parse_token()
7737    }
7738}
7739impl ::m2_syn::ToTokens for _ElapsedTimingKeyword {
7740    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
7741        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
7742    }
7743}
7744impl ::m2_syn::PrettyTree for _ElapsedTimingKeyword {
7745    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
7746        ::m2_syn::PrettyNode::token(
7747            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
7748            <Self as ::m2_syn::Token>::SPELLING,
7749            ::m2_syn::Spanned::span(self),
7750        )
7751    }
7752}
7753impl<N> ::m2_syn::Reconstruct<N> for _ElapsedTimingKeyword
7754where
7755    N: ::m2_syn::ExternalCstNode,
7756{
7757    fn matches(node: &N) -> bool {
7758        node.identity().matches("elapsedTiming", false)
7759    }
7760    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
7761        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
7762            return Err(::m2_syn::ReconstructError::wrong_node(
7763                "elapsedTiming",
7764                false,
7765                node.identity(),
7766            ));
7767        }
7768        Ok(_ElapsedTimingKeyword(node.span()))
7769    }
7770}
7771#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
7772pub struct _ElseKeyword {
7773    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
7774}
7775#[doc(hidden)]
7776#[allow(non_snake_case)]
7777pub fn _ElseKeyword<S: ::m2_syn::Spanned>(span: S) -> _ElseKeyword {
7778    let span = span.span();
7779    _ElseKeyword {
7780        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
7781            "else", span,
7782        ))),
7783    }
7784}
7785impl ::m2_syn::Token for _ElseKeyword {
7786    const SPELLING: &'static str = "else";
7787    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
7788        match token {
7789            ::m2_syn::TokenTree::Ident(token) => {
7790                token.text() == "else" || token.text().strip_prefix("Core$") == Some("else")
7791            }
7792            _ => false,
7793        }
7794    }
7795    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
7796        Self::matches_token_tree(&token).then_some(Self {
7797            raw: ::std::boxed::Box::new(token),
7798        })
7799    }
7800}
7801impl ::m2_syn::Parse for _ElseKeyword {
7802    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
7803        input.parse_token()
7804    }
7805}
7806impl ::m2_syn::ToTokens for _ElseKeyword {
7807    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
7808        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
7809    }
7810}
7811impl ::m2_syn::PrettyTree for _ElseKeyword {
7812    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
7813        ::m2_syn::PrettyNode::token(
7814            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
7815            <Self as ::m2_syn::Token>::SPELLING,
7816            ::m2_syn::Spanned::span(self),
7817        )
7818    }
7819}
7820impl<N> ::m2_syn::Reconstruct<N> for _ElseKeyword
7821where
7822    N: ::m2_syn::ExternalCstNode,
7823{
7824    fn matches(node: &N) -> bool {
7825        node.identity().matches("else", false)
7826    }
7827    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
7828        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
7829            return Err(::m2_syn::ReconstructError::wrong_node(
7830                "else",
7831                false,
7832                node.identity(),
7833            ));
7834        }
7835        Ok(_ElseKeyword(node.span()))
7836    }
7837}
7838#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
7839pub struct _ExceptKeyword {
7840    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
7841}
7842#[doc(hidden)]
7843#[allow(non_snake_case)]
7844pub fn _ExceptKeyword<S: ::m2_syn::Spanned>(span: S) -> _ExceptKeyword {
7845    let span = span.span();
7846    _ExceptKeyword {
7847        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
7848            "except", span,
7849        ))),
7850    }
7851}
7852impl ::m2_syn::Token for _ExceptKeyword {
7853    const SPELLING: &'static str = "except";
7854    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
7855        match token {
7856            ::m2_syn::TokenTree::Ident(token) => {
7857                token.text() == "except" || token.text().strip_prefix("Core$") == Some("except")
7858            }
7859            _ => false,
7860        }
7861    }
7862    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
7863        Self::matches_token_tree(&token).then_some(Self {
7864            raw: ::std::boxed::Box::new(token),
7865        })
7866    }
7867}
7868impl ::m2_syn::Parse for _ExceptKeyword {
7869    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
7870        input.parse_token()
7871    }
7872}
7873impl ::m2_syn::ToTokens for _ExceptKeyword {
7874    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
7875        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
7876    }
7877}
7878impl ::m2_syn::PrettyTree for _ExceptKeyword {
7879    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
7880        ::m2_syn::PrettyNode::token(
7881            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
7882            <Self as ::m2_syn::Token>::SPELLING,
7883            ::m2_syn::Spanned::span(self),
7884        )
7885    }
7886}
7887impl<N> ::m2_syn::Reconstruct<N> for _ExceptKeyword
7888where
7889    N: ::m2_syn::ExternalCstNode,
7890{
7891    fn matches(node: &N) -> bool {
7892        node.identity().matches("except", false)
7893    }
7894    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
7895        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
7896            return Err(::m2_syn::ReconstructError::wrong_node(
7897                "except",
7898                false,
7899                node.identity(),
7900            ));
7901        }
7902        Ok(_ExceptKeyword(node.span()))
7903    }
7904}
7905#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
7906pub struct _FinishKeyword {
7907    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
7908}
7909#[doc(hidden)]
7910#[allow(non_snake_case)]
7911pub fn _FinishKeyword<S: ::m2_syn::Spanned>(span: S) -> _FinishKeyword {
7912    let span = span.span();
7913    _FinishKeyword {
7914        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
7915            "finish", span,
7916        ))),
7917    }
7918}
7919impl ::m2_syn::Token for _FinishKeyword {
7920    const SPELLING: &'static str = "finish";
7921    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
7922        match token {
7923            ::m2_syn::TokenTree::Ident(token) => {
7924                token.text() == "finish" || token.text().strip_prefix("Core$") == Some("finish")
7925            }
7926            _ => false,
7927        }
7928    }
7929    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
7930        Self::matches_token_tree(&token).then_some(Self {
7931            raw: ::std::boxed::Box::new(token),
7932        })
7933    }
7934}
7935impl ::m2_syn::Parse for _FinishKeyword {
7936    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
7937        input.parse_token()
7938    }
7939}
7940impl ::m2_syn::ToTokens for _FinishKeyword {
7941    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
7942        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
7943    }
7944}
7945impl ::m2_syn::PrettyTree for _FinishKeyword {
7946    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
7947        ::m2_syn::PrettyNode::token(
7948            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
7949            <Self as ::m2_syn::Token>::SPELLING,
7950            ::m2_syn::Spanned::span(self),
7951        )
7952    }
7953}
7954impl<N> ::m2_syn::Reconstruct<N> for _FinishKeyword
7955where
7956    N: ::m2_syn::ExternalCstNode,
7957{
7958    fn matches(node: &N) -> bool {
7959        node.identity().matches("finish", false)
7960    }
7961    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
7962        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
7963            return Err(::m2_syn::ReconstructError::wrong_node(
7964                "finish",
7965                false,
7966                node.identity(),
7967            ));
7968        }
7969        Ok(_FinishKeyword(node.span()))
7970    }
7971}
7972#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
7973pub struct _ForKeyword {
7974    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
7975}
7976#[doc(hidden)]
7977#[allow(non_snake_case)]
7978pub fn _ForKeyword<S: ::m2_syn::Spanned>(span: S) -> _ForKeyword {
7979    let span = span.span();
7980    _ForKeyword {
7981        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
7982            "for", span,
7983        ))),
7984    }
7985}
7986impl ::m2_syn::Token for _ForKeyword {
7987    const SPELLING: &'static str = "for";
7988    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
7989        match token {
7990            ::m2_syn::TokenTree::Ident(token) => {
7991                token.text() == "for" || token.text().strip_prefix("Core$") == Some("for")
7992            }
7993            _ => false,
7994        }
7995    }
7996    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
7997        Self::matches_token_tree(&token).then_some(Self {
7998            raw: ::std::boxed::Box::new(token),
7999        })
8000    }
8001}
8002impl ::m2_syn::Parse for _ForKeyword {
8003    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
8004        input.parse_token()
8005    }
8006}
8007impl ::m2_syn::ToTokens for _ForKeyword {
8008    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
8009        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
8010    }
8011}
8012impl ::m2_syn::PrettyTree for _ForKeyword {
8013    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
8014        ::m2_syn::PrettyNode::token(
8015            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
8016            <Self as ::m2_syn::Token>::SPELLING,
8017            ::m2_syn::Spanned::span(self),
8018        )
8019    }
8020}
8021impl<N> ::m2_syn::Reconstruct<N> for _ForKeyword
8022where
8023    N: ::m2_syn::ExternalCstNode,
8024{
8025    fn matches(node: &N) -> bool {
8026        node.identity().matches("for", false)
8027    }
8028    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
8029        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
8030            return Err(::m2_syn::ReconstructError::wrong_node(
8031                "for",
8032                false,
8033                node.identity(),
8034            ));
8035        }
8036        Ok(_ForKeyword(node.span()))
8037    }
8038}
8039#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
8040pub struct _FromKeyword {
8041    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
8042}
8043#[doc(hidden)]
8044#[allow(non_snake_case)]
8045pub fn _FromKeyword<S: ::m2_syn::Spanned>(span: S) -> _FromKeyword {
8046    let span = span.span();
8047    _FromKeyword {
8048        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
8049            "from", span,
8050        ))),
8051    }
8052}
8053impl ::m2_syn::Token for _FromKeyword {
8054    const SPELLING: &'static str = "from";
8055    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
8056        match token {
8057            ::m2_syn::TokenTree::Ident(token) => {
8058                token.text() == "from" || token.text().strip_prefix("Core$") == Some("from")
8059            }
8060            _ => false,
8061        }
8062    }
8063    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
8064        Self::matches_token_tree(&token).then_some(Self {
8065            raw: ::std::boxed::Box::new(token),
8066        })
8067    }
8068}
8069impl ::m2_syn::Parse for _FromKeyword {
8070    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
8071        input.parse_token()
8072    }
8073}
8074impl ::m2_syn::ToTokens for _FromKeyword {
8075    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
8076        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
8077    }
8078}
8079impl ::m2_syn::PrettyTree for _FromKeyword {
8080    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
8081        ::m2_syn::PrettyNode::token(
8082            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
8083            <Self as ::m2_syn::Token>::SPELLING,
8084            ::m2_syn::Spanned::span(self),
8085        )
8086    }
8087}
8088impl<N> ::m2_syn::Reconstruct<N> for _FromKeyword
8089where
8090    N: ::m2_syn::ExternalCstNode,
8091{
8092    fn matches(node: &N) -> bool {
8093        node.identity().matches("from", false)
8094    }
8095    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
8096        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
8097            return Err(::m2_syn::ReconstructError::wrong_node(
8098                "from",
8099                false,
8100                node.identity(),
8101            ));
8102        }
8103        Ok(_FromKeyword(node.span()))
8104    }
8105}
8106#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
8107pub struct _GlobalKeyword {
8108    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
8109}
8110#[doc(hidden)]
8111#[allow(non_snake_case)]
8112pub fn _GlobalKeyword<S: ::m2_syn::Spanned>(span: S) -> _GlobalKeyword {
8113    let span = span.span();
8114    _GlobalKeyword {
8115        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
8116            "global", span,
8117        ))),
8118    }
8119}
8120impl ::m2_syn::Token for _GlobalKeyword {
8121    const SPELLING: &'static str = "global";
8122    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
8123        match token {
8124            ::m2_syn::TokenTree::Ident(token) => {
8125                token.text() == "global" || token.text().strip_prefix("Core$") == Some("global")
8126            }
8127            _ => false,
8128        }
8129    }
8130    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
8131        Self::matches_token_tree(&token).then_some(Self {
8132            raw: ::std::boxed::Box::new(token),
8133        })
8134    }
8135}
8136impl ::m2_syn::Parse for _GlobalKeyword {
8137    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
8138        input.parse_token()
8139    }
8140}
8141impl ::m2_syn::ToTokens for _GlobalKeyword {
8142    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
8143        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
8144    }
8145}
8146impl ::m2_syn::PrettyTree for _GlobalKeyword {
8147    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
8148        ::m2_syn::PrettyNode::token(
8149            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
8150            <Self as ::m2_syn::Token>::SPELLING,
8151            ::m2_syn::Spanned::span(self),
8152        )
8153    }
8154}
8155impl<N> ::m2_syn::Reconstruct<N> for _GlobalKeyword
8156where
8157    N: ::m2_syn::ExternalCstNode,
8158{
8159    fn matches(node: &N) -> bool {
8160        node.identity().matches("global", false)
8161    }
8162    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
8163        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
8164            return Err(::m2_syn::ReconstructError::wrong_node(
8165                "global",
8166                false,
8167                node.identity(),
8168            ));
8169        }
8170        Ok(_GlobalKeyword(node.span()))
8171    }
8172}
8173#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
8174pub struct _IfKeyword {
8175    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
8176}
8177#[doc(hidden)]
8178#[allow(non_snake_case)]
8179pub fn _IfKeyword<S: ::m2_syn::Spanned>(span: S) -> _IfKeyword {
8180    let span = span.span();
8181    _IfKeyword {
8182        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
8183            "if", span,
8184        ))),
8185    }
8186}
8187impl ::m2_syn::Token for _IfKeyword {
8188    const SPELLING: &'static str = "if";
8189    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
8190        match token {
8191            ::m2_syn::TokenTree::Ident(token) => {
8192                token.text() == "if" || token.text().strip_prefix("Core$") == Some("if")
8193            }
8194            _ => false,
8195        }
8196    }
8197    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
8198        Self::matches_token_tree(&token).then_some(Self {
8199            raw: ::std::boxed::Box::new(token),
8200        })
8201    }
8202}
8203impl ::m2_syn::Parse for _IfKeyword {
8204    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
8205        input.parse_token()
8206    }
8207}
8208impl ::m2_syn::ToTokens for _IfKeyword {
8209    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
8210        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
8211    }
8212}
8213impl ::m2_syn::PrettyTree for _IfKeyword {
8214    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
8215        ::m2_syn::PrettyNode::token(
8216            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
8217            <Self as ::m2_syn::Token>::SPELLING,
8218            ::m2_syn::Spanned::span(self),
8219        )
8220    }
8221}
8222impl<N> ::m2_syn::Reconstruct<N> for _IfKeyword
8223where
8224    N: ::m2_syn::ExternalCstNode,
8225{
8226    fn matches(node: &N) -> bool {
8227        node.identity().matches("if", false)
8228    }
8229    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
8230        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
8231            return Err(::m2_syn::ReconstructError::wrong_node(
8232                "if",
8233                false,
8234                node.identity(),
8235            ));
8236        }
8237        Ok(_IfKeyword(node.span()))
8238    }
8239}
8240#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
8241pub struct _InKeyword {
8242    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
8243}
8244#[doc(hidden)]
8245#[allow(non_snake_case)]
8246pub fn _InKeyword<S: ::m2_syn::Spanned>(span: S) -> _InKeyword {
8247    let span = span.span();
8248    _InKeyword {
8249        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
8250            "in", span,
8251        ))),
8252    }
8253}
8254impl ::m2_syn::Token for _InKeyword {
8255    const SPELLING: &'static str = "in";
8256    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
8257        match token {
8258            ::m2_syn::TokenTree::Ident(token) => {
8259                token.text() == "in" || token.text().strip_prefix("Core$") == Some("in")
8260            }
8261            _ => false,
8262        }
8263    }
8264    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
8265        Self::matches_token_tree(&token).then_some(Self {
8266            raw: ::std::boxed::Box::new(token),
8267        })
8268    }
8269}
8270impl ::m2_syn::Parse for _InKeyword {
8271    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
8272        input.parse_token()
8273    }
8274}
8275impl ::m2_syn::ToTokens for _InKeyword {
8276    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
8277        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
8278    }
8279}
8280impl ::m2_syn::PrettyTree for _InKeyword {
8281    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
8282        ::m2_syn::PrettyNode::token(
8283            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
8284            <Self as ::m2_syn::Token>::SPELLING,
8285            ::m2_syn::Spanned::span(self),
8286        )
8287    }
8288}
8289impl<N> ::m2_syn::Reconstruct<N> for _InKeyword
8290where
8291    N: ::m2_syn::ExternalCstNode,
8292{
8293    fn matches(node: &N) -> bool {
8294        node.identity().matches("in", false)
8295    }
8296    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
8297        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
8298            return Err(::m2_syn::ReconstructError::wrong_node(
8299                "in",
8300                false,
8301                node.identity(),
8302            ));
8303        }
8304        Ok(_InKeyword(node.span()))
8305    }
8306}
8307#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
8308pub struct _ListKeyword {
8309    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
8310}
8311#[doc(hidden)]
8312#[allow(non_snake_case)]
8313pub fn _ListKeyword<S: ::m2_syn::Spanned>(span: S) -> _ListKeyword {
8314    let span = span.span();
8315    _ListKeyword {
8316        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
8317            "list", span,
8318        ))),
8319    }
8320}
8321impl ::m2_syn::Token for _ListKeyword {
8322    const SPELLING: &'static str = "list";
8323    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
8324        match token {
8325            ::m2_syn::TokenTree::Ident(token) => {
8326                token.text() == "list" || token.text().strip_prefix("Core$") == Some("list")
8327            }
8328            _ => false,
8329        }
8330    }
8331    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
8332        Self::matches_token_tree(&token).then_some(Self {
8333            raw: ::std::boxed::Box::new(token),
8334        })
8335    }
8336}
8337impl ::m2_syn::Parse for _ListKeyword {
8338    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
8339        input.parse_token()
8340    }
8341}
8342impl ::m2_syn::ToTokens for _ListKeyword {
8343    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
8344        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
8345    }
8346}
8347impl ::m2_syn::PrettyTree for _ListKeyword {
8348    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
8349        ::m2_syn::PrettyNode::token(
8350            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
8351            <Self as ::m2_syn::Token>::SPELLING,
8352            ::m2_syn::Spanned::span(self),
8353        )
8354    }
8355}
8356impl<N> ::m2_syn::Reconstruct<N> for _ListKeyword
8357where
8358    N: ::m2_syn::ExternalCstNode,
8359{
8360    fn matches(node: &N) -> bool {
8361        node.identity().matches("list", false)
8362    }
8363    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
8364        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
8365            return Err(::m2_syn::ReconstructError::wrong_node(
8366                "list",
8367                false,
8368                node.identity(),
8369            ));
8370        }
8371        Ok(_ListKeyword(node.span()))
8372    }
8373}
8374#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
8375pub struct _LocalKeyword {
8376    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
8377}
8378#[doc(hidden)]
8379#[allow(non_snake_case)]
8380pub fn _LocalKeyword<S: ::m2_syn::Spanned>(span: S) -> _LocalKeyword {
8381    let span = span.span();
8382    _LocalKeyword {
8383        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
8384            "local", span,
8385        ))),
8386    }
8387}
8388impl ::m2_syn::Token for _LocalKeyword {
8389    const SPELLING: &'static str = "local";
8390    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
8391        match token {
8392            ::m2_syn::TokenTree::Ident(token) => {
8393                token.text() == "local" || token.text().strip_prefix("Core$") == Some("local")
8394            }
8395            _ => false,
8396        }
8397    }
8398    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
8399        Self::matches_token_tree(&token).then_some(Self {
8400            raw: ::std::boxed::Box::new(token),
8401        })
8402    }
8403}
8404impl ::m2_syn::Parse for _LocalKeyword {
8405    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
8406        input.parse_token()
8407    }
8408}
8409impl ::m2_syn::ToTokens for _LocalKeyword {
8410    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
8411        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
8412    }
8413}
8414impl ::m2_syn::PrettyTree for _LocalKeyword {
8415    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
8416        ::m2_syn::PrettyNode::token(
8417            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
8418            <Self as ::m2_syn::Token>::SPELLING,
8419            ::m2_syn::Spanned::span(self),
8420        )
8421    }
8422}
8423impl<N> ::m2_syn::Reconstruct<N> for _LocalKeyword
8424where
8425    N: ::m2_syn::ExternalCstNode,
8426{
8427    fn matches(node: &N) -> bool {
8428        node.identity().matches("local", false)
8429    }
8430    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
8431        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
8432            return Err(::m2_syn::ReconstructError::wrong_node(
8433                "local",
8434                false,
8435                node.identity(),
8436            ));
8437        }
8438        Ok(_LocalKeyword(node.span()))
8439    }
8440}
8441#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
8442pub struct _NewKeyword {
8443    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
8444}
8445#[doc(hidden)]
8446#[allow(non_snake_case)]
8447pub fn _NewKeyword<S: ::m2_syn::Spanned>(span: S) -> _NewKeyword {
8448    let span = span.span();
8449    _NewKeyword {
8450        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
8451            "new", span,
8452        ))),
8453    }
8454}
8455impl ::m2_syn::Token for _NewKeyword {
8456    const SPELLING: &'static str = "new";
8457    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
8458        match token {
8459            ::m2_syn::TokenTree::Ident(token) => {
8460                token.text() == "new" || token.text().strip_prefix("Core$") == Some("new")
8461            }
8462            _ => false,
8463        }
8464    }
8465    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
8466        Self::matches_token_tree(&token).then_some(Self {
8467            raw: ::std::boxed::Box::new(token),
8468        })
8469    }
8470}
8471impl ::m2_syn::Parse for _NewKeyword {
8472    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
8473        input.parse_token()
8474    }
8475}
8476impl ::m2_syn::ToTokens for _NewKeyword {
8477    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
8478        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
8479    }
8480}
8481impl ::m2_syn::PrettyTree for _NewKeyword {
8482    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
8483        ::m2_syn::PrettyNode::token(
8484            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
8485            <Self as ::m2_syn::Token>::SPELLING,
8486            ::m2_syn::Spanned::span(self),
8487        )
8488    }
8489}
8490impl<N> ::m2_syn::Reconstruct<N> for _NewKeyword
8491where
8492    N: ::m2_syn::ExternalCstNode,
8493{
8494    fn matches(node: &N) -> bool {
8495        node.identity().matches("new", false)
8496    }
8497    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
8498        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
8499            return Err(::m2_syn::ReconstructError::wrong_node(
8500                "new",
8501                false,
8502                node.identity(),
8503            ));
8504        }
8505        Ok(_NewKeyword(node.span()))
8506    }
8507}
8508#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
8509pub struct _OfKeyword {
8510    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
8511}
8512#[doc(hidden)]
8513#[allow(non_snake_case)]
8514pub fn _OfKeyword<S: ::m2_syn::Spanned>(span: S) -> _OfKeyword {
8515    let span = span.span();
8516    _OfKeyword {
8517        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
8518            "of", span,
8519        ))),
8520    }
8521}
8522impl ::m2_syn::Token for _OfKeyword {
8523    const SPELLING: &'static str = "of";
8524    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
8525        match token {
8526            ::m2_syn::TokenTree::Ident(token) => {
8527                token.text() == "of" || token.text().strip_prefix("Core$") == Some("of")
8528            }
8529            _ => false,
8530        }
8531    }
8532    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
8533        Self::matches_token_tree(&token).then_some(Self {
8534            raw: ::std::boxed::Box::new(token),
8535        })
8536    }
8537}
8538impl ::m2_syn::Parse for _OfKeyword {
8539    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
8540        input.parse_token()
8541    }
8542}
8543impl ::m2_syn::ToTokens for _OfKeyword {
8544    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
8545        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
8546    }
8547}
8548impl ::m2_syn::PrettyTree for _OfKeyword {
8549    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
8550        ::m2_syn::PrettyNode::token(
8551            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
8552            <Self as ::m2_syn::Token>::SPELLING,
8553            ::m2_syn::Spanned::span(self),
8554        )
8555    }
8556}
8557impl<N> ::m2_syn::Reconstruct<N> for _OfKeyword
8558where
8559    N: ::m2_syn::ExternalCstNode,
8560{
8561    fn matches(node: &N) -> bool {
8562        node.identity().matches("of", false)
8563    }
8564    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
8565        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
8566            return Err(::m2_syn::ReconstructError::wrong_node(
8567                "of",
8568                false,
8569                node.identity(),
8570            ));
8571        }
8572        Ok(_OfKeyword(node.span()))
8573    }
8574}
8575#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
8576pub struct _ProfileKeyword {
8577    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
8578}
8579#[doc(hidden)]
8580#[allow(non_snake_case)]
8581pub fn _ProfileKeyword<S: ::m2_syn::Spanned>(span: S) -> _ProfileKeyword {
8582    let span = span.span();
8583    _ProfileKeyword {
8584        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
8585            "profile", span,
8586        ))),
8587    }
8588}
8589impl ::m2_syn::Token for _ProfileKeyword {
8590    const SPELLING: &'static str = "profile";
8591    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
8592        match token {
8593            ::m2_syn::TokenTree::Ident(token) => {
8594                token.text() == "profile" || token.text().strip_prefix("Core$") == Some("profile")
8595            }
8596            _ => false,
8597        }
8598    }
8599    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
8600        Self::matches_token_tree(&token).then_some(Self {
8601            raw: ::std::boxed::Box::new(token),
8602        })
8603    }
8604}
8605impl ::m2_syn::Parse for _ProfileKeyword {
8606    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
8607        input.parse_token()
8608    }
8609}
8610impl ::m2_syn::ToTokens for _ProfileKeyword {
8611    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
8612        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
8613    }
8614}
8615impl ::m2_syn::PrettyTree for _ProfileKeyword {
8616    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
8617        ::m2_syn::PrettyNode::token(
8618            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
8619            <Self as ::m2_syn::Token>::SPELLING,
8620            ::m2_syn::Spanned::span(self),
8621        )
8622    }
8623}
8624impl<N> ::m2_syn::Reconstruct<N> for _ProfileKeyword
8625where
8626    N: ::m2_syn::ExternalCstNode,
8627{
8628    fn matches(node: &N) -> bool {
8629        node.identity().matches("profile", false)
8630    }
8631    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
8632        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
8633            return Err(::m2_syn::ReconstructError::wrong_node(
8634                "profile",
8635                false,
8636                node.identity(),
8637            ));
8638        }
8639        Ok(_ProfileKeyword(node.span()))
8640    }
8641}
8642#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
8643pub struct _ReturnKeyword {
8644    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
8645}
8646#[doc(hidden)]
8647#[allow(non_snake_case)]
8648pub fn _ReturnKeyword<S: ::m2_syn::Spanned>(span: S) -> _ReturnKeyword {
8649    let span = span.span();
8650    _ReturnKeyword {
8651        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
8652            "return", span,
8653        ))),
8654    }
8655}
8656impl ::m2_syn::Token for _ReturnKeyword {
8657    const SPELLING: &'static str = "return";
8658    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
8659        match token {
8660            ::m2_syn::TokenTree::Ident(token) => {
8661                token.text() == "return" || token.text().strip_prefix("Core$") == Some("return")
8662            }
8663            _ => false,
8664        }
8665    }
8666    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
8667        Self::matches_token_tree(&token).then_some(Self {
8668            raw: ::std::boxed::Box::new(token),
8669        })
8670    }
8671}
8672impl ::m2_syn::Parse for _ReturnKeyword {
8673    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
8674        input.parse_token()
8675    }
8676}
8677impl ::m2_syn::ToTokens for _ReturnKeyword {
8678    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
8679        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
8680    }
8681}
8682impl ::m2_syn::PrettyTree for _ReturnKeyword {
8683    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
8684        ::m2_syn::PrettyNode::token(
8685            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
8686            <Self as ::m2_syn::Token>::SPELLING,
8687            ::m2_syn::Spanned::span(self),
8688        )
8689    }
8690}
8691impl<N> ::m2_syn::Reconstruct<N> for _ReturnKeyword
8692where
8693    N: ::m2_syn::ExternalCstNode,
8694{
8695    fn matches(node: &N) -> bool {
8696        node.identity().matches("return", false)
8697    }
8698    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
8699        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
8700            return Err(::m2_syn::ReconstructError::wrong_node(
8701                "return",
8702                false,
8703                node.identity(),
8704            ));
8705        }
8706        Ok(_ReturnKeyword(node.span()))
8707    }
8708}
8709#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
8710pub struct _ShieldKeyword {
8711    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
8712}
8713#[doc(hidden)]
8714#[allow(non_snake_case)]
8715pub fn _ShieldKeyword<S: ::m2_syn::Spanned>(span: S) -> _ShieldKeyword {
8716    let span = span.span();
8717    _ShieldKeyword {
8718        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
8719            "shield", span,
8720        ))),
8721    }
8722}
8723impl ::m2_syn::Token for _ShieldKeyword {
8724    const SPELLING: &'static str = "shield";
8725    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
8726        match token {
8727            ::m2_syn::TokenTree::Ident(token) => {
8728                token.text() == "shield" || token.text().strip_prefix("Core$") == Some("shield")
8729            }
8730            _ => false,
8731        }
8732    }
8733    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
8734        Self::matches_token_tree(&token).then_some(Self {
8735            raw: ::std::boxed::Box::new(token),
8736        })
8737    }
8738}
8739impl ::m2_syn::Parse for _ShieldKeyword {
8740    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
8741        input.parse_token()
8742    }
8743}
8744impl ::m2_syn::ToTokens for _ShieldKeyword {
8745    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
8746        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
8747    }
8748}
8749impl ::m2_syn::PrettyTree for _ShieldKeyword {
8750    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
8751        ::m2_syn::PrettyNode::token(
8752            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
8753            <Self as ::m2_syn::Token>::SPELLING,
8754            ::m2_syn::Spanned::span(self),
8755        )
8756    }
8757}
8758impl<N> ::m2_syn::Reconstruct<N> for _ShieldKeyword
8759where
8760    N: ::m2_syn::ExternalCstNode,
8761{
8762    fn matches(node: &N) -> bool {
8763        node.identity().matches("shield", false)
8764    }
8765    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
8766        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
8767            return Err(::m2_syn::ReconstructError::wrong_node(
8768                "shield",
8769                false,
8770                node.identity(),
8771            ));
8772        }
8773        Ok(_ShieldKeyword(node.span()))
8774    }
8775}
8776#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
8777pub struct _StepKeyword {
8778    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
8779}
8780#[doc(hidden)]
8781#[allow(non_snake_case)]
8782pub fn _StepKeyword<S: ::m2_syn::Spanned>(span: S) -> _StepKeyword {
8783    let span = span.span();
8784    _StepKeyword {
8785        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
8786            "step", span,
8787        ))),
8788    }
8789}
8790impl ::m2_syn::Token for _StepKeyword {
8791    const SPELLING: &'static str = "step";
8792    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
8793        match token {
8794            ::m2_syn::TokenTree::Ident(token) => {
8795                token.text() == "step" || token.text().strip_prefix("Core$") == Some("step")
8796            }
8797            _ => false,
8798        }
8799    }
8800    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
8801        Self::matches_token_tree(&token).then_some(Self {
8802            raw: ::std::boxed::Box::new(token),
8803        })
8804    }
8805}
8806impl ::m2_syn::Parse for _StepKeyword {
8807    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
8808        input.parse_token()
8809    }
8810}
8811impl ::m2_syn::ToTokens for _StepKeyword {
8812    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
8813        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
8814    }
8815}
8816impl ::m2_syn::PrettyTree for _StepKeyword {
8817    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
8818        ::m2_syn::PrettyNode::token(
8819            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
8820            <Self as ::m2_syn::Token>::SPELLING,
8821            ::m2_syn::Spanned::span(self),
8822        )
8823    }
8824}
8825impl<N> ::m2_syn::Reconstruct<N> for _StepKeyword
8826where
8827    N: ::m2_syn::ExternalCstNode,
8828{
8829    fn matches(node: &N) -> bool {
8830        node.identity().matches("step", false)
8831    }
8832    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
8833        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
8834            return Err(::m2_syn::ReconstructError::wrong_node(
8835                "step",
8836                false,
8837                node.identity(),
8838            ));
8839        }
8840        Ok(_StepKeyword(node.span()))
8841    }
8842}
8843#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
8844pub struct _SymbolKeyword {
8845    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
8846}
8847#[doc(hidden)]
8848#[allow(non_snake_case)]
8849pub fn _SymbolKeyword<S: ::m2_syn::Spanned>(span: S) -> _SymbolKeyword {
8850    let span = span.span();
8851    _SymbolKeyword {
8852        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
8853            "symbol", span,
8854        ))),
8855    }
8856}
8857impl ::m2_syn::Token for _SymbolKeyword {
8858    const SPELLING: &'static str = "symbol";
8859    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
8860        match token {
8861            ::m2_syn::TokenTree::Ident(token) => {
8862                token.text() == "symbol" || token.text().strip_prefix("Core$") == Some("symbol")
8863            }
8864            _ => false,
8865        }
8866    }
8867    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
8868        Self::matches_token_tree(&token).then_some(Self {
8869            raw: ::std::boxed::Box::new(token),
8870        })
8871    }
8872}
8873impl ::m2_syn::Parse for _SymbolKeyword {
8874    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
8875        input.parse_token()
8876    }
8877}
8878impl ::m2_syn::ToTokens for _SymbolKeyword {
8879    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
8880        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
8881    }
8882}
8883impl ::m2_syn::PrettyTree for _SymbolKeyword {
8884    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
8885        ::m2_syn::PrettyNode::token(
8886            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
8887            <Self as ::m2_syn::Token>::SPELLING,
8888            ::m2_syn::Spanned::span(self),
8889        )
8890    }
8891}
8892impl<N> ::m2_syn::Reconstruct<N> for _SymbolKeyword
8893where
8894    N: ::m2_syn::ExternalCstNode,
8895{
8896    fn matches(node: &N) -> bool {
8897        node.identity().matches("symbol", false)
8898    }
8899    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
8900        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
8901            return Err(::m2_syn::ReconstructError::wrong_node(
8902                "symbol",
8903                false,
8904                node.identity(),
8905            ));
8906        }
8907        Ok(_SymbolKeyword(node.span()))
8908    }
8909}
8910#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
8911pub struct _TestKeyword {
8912    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
8913}
8914#[doc(hidden)]
8915#[allow(non_snake_case)]
8916pub fn _TestKeyword<S: ::m2_syn::Spanned>(span: S) -> _TestKeyword {
8917    let span = span.span();
8918    _TestKeyword {
8919        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
8920            "TEST", span,
8921        ))),
8922    }
8923}
8924impl ::m2_syn::Token for _TestKeyword {
8925    const SPELLING: &'static str = "TEST";
8926    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
8927        match token {
8928            ::m2_syn::TokenTree::Ident(token) => {
8929                token.text() == "TEST" || token.text().strip_prefix("Core$") == Some("TEST")
8930            }
8931            _ => false,
8932        }
8933    }
8934    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
8935        Self::matches_token_tree(&token).then_some(Self {
8936            raw: ::std::boxed::Box::new(token),
8937        })
8938    }
8939}
8940impl ::m2_syn::Parse for _TestKeyword {
8941    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
8942        input.parse_token()
8943    }
8944}
8945impl ::m2_syn::ToTokens for _TestKeyword {
8946    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
8947        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
8948    }
8949}
8950impl ::m2_syn::PrettyTree for _TestKeyword {
8951    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
8952        ::m2_syn::PrettyNode::token(
8953            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
8954            <Self as ::m2_syn::Token>::SPELLING,
8955            ::m2_syn::Spanned::span(self),
8956        )
8957    }
8958}
8959impl<N> ::m2_syn::Reconstruct<N> for _TestKeyword
8960where
8961    N: ::m2_syn::ExternalCstNode,
8962{
8963    fn matches(node: &N) -> bool {
8964        node.identity().matches("TEST", false)
8965    }
8966    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
8967        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
8968            return Err(::m2_syn::ReconstructError::wrong_node(
8969                "TEST",
8970                false,
8971                node.identity(),
8972            ));
8973        }
8974        Ok(_TestKeyword(node.span()))
8975    }
8976}
8977#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
8978pub struct _ThenKeyword {
8979    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
8980}
8981#[doc(hidden)]
8982#[allow(non_snake_case)]
8983pub fn _ThenKeyword<S: ::m2_syn::Spanned>(span: S) -> _ThenKeyword {
8984    let span = span.span();
8985    _ThenKeyword {
8986        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
8987            "then", span,
8988        ))),
8989    }
8990}
8991impl ::m2_syn::Token for _ThenKeyword {
8992    const SPELLING: &'static str = "then";
8993    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
8994        match token {
8995            ::m2_syn::TokenTree::Ident(token) => {
8996                token.text() == "then" || token.text().strip_prefix("Core$") == Some("then")
8997            }
8998            _ => false,
8999        }
9000    }
9001    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
9002        Self::matches_token_tree(&token).then_some(Self {
9003            raw: ::std::boxed::Box::new(token),
9004        })
9005    }
9006}
9007impl ::m2_syn::Parse for _ThenKeyword {
9008    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
9009        input.parse_token()
9010    }
9011}
9012impl ::m2_syn::ToTokens for _ThenKeyword {
9013    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
9014        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
9015    }
9016}
9017impl ::m2_syn::PrettyTree for _ThenKeyword {
9018    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
9019        ::m2_syn::PrettyNode::token(
9020            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
9021            <Self as ::m2_syn::Token>::SPELLING,
9022            ::m2_syn::Spanned::span(self),
9023        )
9024    }
9025}
9026impl<N> ::m2_syn::Reconstruct<N> for _ThenKeyword
9027where
9028    N: ::m2_syn::ExternalCstNode,
9029{
9030    fn matches(node: &N) -> bool {
9031        node.identity().matches("then", false)
9032    }
9033    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
9034        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
9035            return Err(::m2_syn::ReconstructError::wrong_node(
9036                "then",
9037                false,
9038                node.identity(),
9039            ));
9040        }
9041        Ok(_ThenKeyword(node.span()))
9042    }
9043}
9044#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
9045pub struct _ThreadLocalKeyword {
9046    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
9047}
9048#[doc(hidden)]
9049#[allow(non_snake_case)]
9050pub fn _ThreadLocalKeyword<S: ::m2_syn::Spanned>(span: S) -> _ThreadLocalKeyword {
9051    let span = span.span();
9052    _ThreadLocalKeyword {
9053        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
9054            "threadLocal",
9055            span,
9056        ))),
9057    }
9058}
9059impl ::m2_syn::Token for _ThreadLocalKeyword {
9060    const SPELLING: &'static str = "threadLocal";
9061    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
9062        match token {
9063            ::m2_syn::TokenTree::Ident(token) => {
9064                token.text() == "threadLocal"
9065                    || token.text().strip_prefix("Core$") == Some("threadLocal")
9066            }
9067            _ => false,
9068        }
9069    }
9070    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
9071        Self::matches_token_tree(&token).then_some(Self {
9072            raw: ::std::boxed::Box::new(token),
9073        })
9074    }
9075}
9076impl ::m2_syn::Parse for _ThreadLocalKeyword {
9077    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
9078        input.parse_token()
9079    }
9080}
9081impl ::m2_syn::ToTokens for _ThreadLocalKeyword {
9082    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
9083        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
9084    }
9085}
9086impl ::m2_syn::PrettyTree for _ThreadLocalKeyword {
9087    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
9088        ::m2_syn::PrettyNode::token(
9089            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
9090            <Self as ::m2_syn::Token>::SPELLING,
9091            ::m2_syn::Spanned::span(self),
9092        )
9093    }
9094}
9095impl<N> ::m2_syn::Reconstruct<N> for _ThreadLocalKeyword
9096where
9097    N: ::m2_syn::ExternalCstNode,
9098{
9099    fn matches(node: &N) -> bool {
9100        node.identity().matches("threadLocal", false)
9101    }
9102    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
9103        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
9104            return Err(::m2_syn::ReconstructError::wrong_node(
9105                "threadLocal",
9106                false,
9107                node.identity(),
9108            ));
9109        }
9110        Ok(_ThreadLocalKeyword(node.span()))
9111    }
9112}
9113#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
9114pub struct _ThreadVariableKeyword {
9115    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
9116}
9117#[doc(hidden)]
9118#[allow(non_snake_case)]
9119pub fn _ThreadVariableKeyword<S: ::m2_syn::Spanned>(span: S) -> _ThreadVariableKeyword {
9120    let span = span.span();
9121    _ThreadVariableKeyword {
9122        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
9123            "threadVariable",
9124            span,
9125        ))),
9126    }
9127}
9128impl ::m2_syn::Token for _ThreadVariableKeyword {
9129    const SPELLING: &'static str = "threadVariable";
9130    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
9131        match token {
9132            ::m2_syn::TokenTree::Ident(token) => {
9133                token.text() == "threadVariable"
9134                    || token.text().strip_prefix("Core$") == Some("threadVariable")
9135            }
9136            _ => false,
9137        }
9138    }
9139    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
9140        Self::matches_token_tree(&token).then_some(Self {
9141            raw: ::std::boxed::Box::new(token),
9142        })
9143    }
9144}
9145impl ::m2_syn::Parse for _ThreadVariableKeyword {
9146    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
9147        input.parse_token()
9148    }
9149}
9150impl ::m2_syn::ToTokens for _ThreadVariableKeyword {
9151    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
9152        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
9153    }
9154}
9155impl ::m2_syn::PrettyTree for _ThreadVariableKeyword {
9156    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
9157        ::m2_syn::PrettyNode::token(
9158            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
9159            <Self as ::m2_syn::Token>::SPELLING,
9160            ::m2_syn::Spanned::span(self),
9161        )
9162    }
9163}
9164impl<N> ::m2_syn::Reconstruct<N> for _ThreadVariableKeyword
9165where
9166    N: ::m2_syn::ExternalCstNode,
9167{
9168    fn matches(node: &N) -> bool {
9169        node.identity().matches("threadVariable", false)
9170    }
9171    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
9172        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
9173            return Err(::m2_syn::ReconstructError::wrong_node(
9174                "threadVariable",
9175                false,
9176                node.identity(),
9177            ));
9178        }
9179        Ok(_ThreadVariableKeyword(node.span()))
9180    }
9181}
9182#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
9183pub struct _ThrowKeyword {
9184    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
9185}
9186#[doc(hidden)]
9187#[allow(non_snake_case)]
9188pub fn _ThrowKeyword<S: ::m2_syn::Spanned>(span: S) -> _ThrowKeyword {
9189    let span = span.span();
9190    _ThrowKeyword {
9191        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
9192            "throw", span,
9193        ))),
9194    }
9195}
9196impl ::m2_syn::Token for _ThrowKeyword {
9197    const SPELLING: &'static str = "throw";
9198    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
9199        match token {
9200            ::m2_syn::TokenTree::Ident(token) => {
9201                token.text() == "throw" || token.text().strip_prefix("Core$") == Some("throw")
9202            }
9203            _ => false,
9204        }
9205    }
9206    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
9207        Self::matches_token_tree(&token).then_some(Self {
9208            raw: ::std::boxed::Box::new(token),
9209        })
9210    }
9211}
9212impl ::m2_syn::Parse for _ThrowKeyword {
9213    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
9214        input.parse_token()
9215    }
9216}
9217impl ::m2_syn::ToTokens for _ThrowKeyword {
9218    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
9219        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
9220    }
9221}
9222impl ::m2_syn::PrettyTree for _ThrowKeyword {
9223    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
9224        ::m2_syn::PrettyNode::token(
9225            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
9226            <Self as ::m2_syn::Token>::SPELLING,
9227            ::m2_syn::Spanned::span(self),
9228        )
9229    }
9230}
9231impl<N> ::m2_syn::Reconstruct<N> for _ThrowKeyword
9232where
9233    N: ::m2_syn::ExternalCstNode,
9234{
9235    fn matches(node: &N) -> bool {
9236        node.identity().matches("throw", false)
9237    }
9238    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
9239        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
9240            return Err(::m2_syn::ReconstructError::wrong_node(
9241                "throw",
9242                false,
9243                node.identity(),
9244            ));
9245        }
9246        Ok(_ThrowKeyword(node.span()))
9247    }
9248}
9249#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
9250pub struct _TimeKeyword {
9251    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
9252}
9253#[doc(hidden)]
9254#[allow(non_snake_case)]
9255pub fn _TimeKeyword<S: ::m2_syn::Spanned>(span: S) -> _TimeKeyword {
9256    let span = span.span();
9257    _TimeKeyword {
9258        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
9259            "time", span,
9260        ))),
9261    }
9262}
9263impl ::m2_syn::Token for _TimeKeyword {
9264    const SPELLING: &'static str = "time";
9265    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
9266        match token {
9267            ::m2_syn::TokenTree::Ident(token) => {
9268                token.text() == "time" || token.text().strip_prefix("Core$") == Some("time")
9269            }
9270            _ => false,
9271        }
9272    }
9273    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
9274        Self::matches_token_tree(&token).then_some(Self {
9275            raw: ::std::boxed::Box::new(token),
9276        })
9277    }
9278}
9279impl ::m2_syn::Parse for _TimeKeyword {
9280    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
9281        input.parse_token()
9282    }
9283}
9284impl ::m2_syn::ToTokens for _TimeKeyword {
9285    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
9286        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
9287    }
9288}
9289impl ::m2_syn::PrettyTree for _TimeKeyword {
9290    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
9291        ::m2_syn::PrettyNode::token(
9292            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
9293            <Self as ::m2_syn::Token>::SPELLING,
9294            ::m2_syn::Spanned::span(self),
9295        )
9296    }
9297}
9298impl<N> ::m2_syn::Reconstruct<N> for _TimeKeyword
9299where
9300    N: ::m2_syn::ExternalCstNode,
9301{
9302    fn matches(node: &N) -> bool {
9303        node.identity().matches("time", false)
9304    }
9305    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
9306        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
9307            return Err(::m2_syn::ReconstructError::wrong_node(
9308                "time",
9309                false,
9310                node.identity(),
9311            ));
9312        }
9313        Ok(_TimeKeyword(node.span()))
9314    }
9315}
9316#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
9317pub struct _TimingKeyword {
9318    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
9319}
9320#[doc(hidden)]
9321#[allow(non_snake_case)]
9322pub fn _TimingKeyword<S: ::m2_syn::Spanned>(span: S) -> _TimingKeyword {
9323    let span = span.span();
9324    _TimingKeyword {
9325        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
9326            "timing", span,
9327        ))),
9328    }
9329}
9330impl ::m2_syn::Token for _TimingKeyword {
9331    const SPELLING: &'static str = "timing";
9332    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
9333        match token {
9334            ::m2_syn::TokenTree::Ident(token) => {
9335                token.text() == "timing" || token.text().strip_prefix("Core$") == Some("timing")
9336            }
9337            _ => false,
9338        }
9339    }
9340    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
9341        Self::matches_token_tree(&token).then_some(Self {
9342            raw: ::std::boxed::Box::new(token),
9343        })
9344    }
9345}
9346impl ::m2_syn::Parse for _TimingKeyword {
9347    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
9348        input.parse_token()
9349    }
9350}
9351impl ::m2_syn::ToTokens for _TimingKeyword {
9352    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
9353        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
9354    }
9355}
9356impl ::m2_syn::PrettyTree for _TimingKeyword {
9357    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
9358        ::m2_syn::PrettyNode::token(
9359            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
9360            <Self as ::m2_syn::Token>::SPELLING,
9361            ::m2_syn::Spanned::span(self),
9362        )
9363    }
9364}
9365impl<N> ::m2_syn::Reconstruct<N> for _TimingKeyword
9366where
9367    N: ::m2_syn::ExternalCstNode,
9368{
9369    fn matches(node: &N) -> bool {
9370        node.identity().matches("timing", false)
9371    }
9372    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
9373        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
9374            return Err(::m2_syn::ReconstructError::wrong_node(
9375                "timing",
9376                false,
9377                node.identity(),
9378            ));
9379        }
9380        Ok(_TimingKeyword(node.span()))
9381    }
9382}
9383#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
9384pub struct _ToKeyword {
9385    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
9386}
9387#[doc(hidden)]
9388#[allow(non_snake_case)]
9389pub fn _ToKeyword<S: ::m2_syn::Spanned>(span: S) -> _ToKeyword {
9390    let span = span.span();
9391    _ToKeyword {
9392        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
9393            "to", span,
9394        ))),
9395    }
9396}
9397impl ::m2_syn::Token for _ToKeyword {
9398    const SPELLING: &'static str = "to";
9399    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
9400        match token {
9401            ::m2_syn::TokenTree::Ident(token) => {
9402                token.text() == "to" || token.text().strip_prefix("Core$") == Some("to")
9403            }
9404            _ => false,
9405        }
9406    }
9407    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
9408        Self::matches_token_tree(&token).then_some(Self {
9409            raw: ::std::boxed::Box::new(token),
9410        })
9411    }
9412}
9413impl ::m2_syn::Parse for _ToKeyword {
9414    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
9415        input.parse_token()
9416    }
9417}
9418impl ::m2_syn::ToTokens for _ToKeyword {
9419    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
9420        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
9421    }
9422}
9423impl ::m2_syn::PrettyTree for _ToKeyword {
9424    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
9425        ::m2_syn::PrettyNode::token(
9426            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
9427            <Self as ::m2_syn::Token>::SPELLING,
9428            ::m2_syn::Spanned::span(self),
9429        )
9430    }
9431}
9432impl<N> ::m2_syn::Reconstruct<N> for _ToKeyword
9433where
9434    N: ::m2_syn::ExternalCstNode,
9435{
9436    fn matches(node: &N) -> bool {
9437        node.identity().matches("to", false)
9438    }
9439    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
9440        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
9441            return Err(::m2_syn::ReconstructError::wrong_node(
9442                "to",
9443                false,
9444                node.identity(),
9445            ));
9446        }
9447        Ok(_ToKeyword(node.span()))
9448    }
9449}
9450#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
9451pub struct _TrapKeyword {
9452    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
9453}
9454#[doc(hidden)]
9455#[allow(non_snake_case)]
9456pub fn _TrapKeyword<S: ::m2_syn::Spanned>(span: S) -> _TrapKeyword {
9457    let span = span.span();
9458    _TrapKeyword {
9459        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
9460            "trap", span,
9461        ))),
9462    }
9463}
9464impl ::m2_syn::Token for _TrapKeyword {
9465    const SPELLING: &'static str = "trap";
9466    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
9467        match token {
9468            ::m2_syn::TokenTree::Ident(token) => {
9469                token.text() == "trap" || token.text().strip_prefix("Core$") == Some("trap")
9470            }
9471            _ => false,
9472        }
9473    }
9474    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
9475        Self::matches_token_tree(&token).then_some(Self {
9476            raw: ::std::boxed::Box::new(token),
9477        })
9478    }
9479}
9480impl ::m2_syn::Parse for _TrapKeyword {
9481    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
9482        input.parse_token()
9483    }
9484}
9485impl ::m2_syn::ToTokens for _TrapKeyword {
9486    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
9487        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
9488    }
9489}
9490impl ::m2_syn::PrettyTree for _TrapKeyword {
9491    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
9492        ::m2_syn::PrettyNode::token(
9493            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
9494            <Self as ::m2_syn::Token>::SPELLING,
9495            ::m2_syn::Spanned::span(self),
9496        )
9497    }
9498}
9499impl<N> ::m2_syn::Reconstruct<N> for _TrapKeyword
9500where
9501    N: ::m2_syn::ExternalCstNode,
9502{
9503    fn matches(node: &N) -> bool {
9504        node.identity().matches("trap", false)
9505    }
9506    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
9507        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
9508            return Err(::m2_syn::ReconstructError::wrong_node(
9509                "trap",
9510                false,
9511                node.identity(),
9512            ));
9513        }
9514        Ok(_TrapKeyword(node.span()))
9515    }
9516}
9517#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
9518pub struct _TryKeyword {
9519    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
9520}
9521#[doc(hidden)]
9522#[allow(non_snake_case)]
9523pub fn _TryKeyword<S: ::m2_syn::Spanned>(span: S) -> _TryKeyword {
9524    let span = span.span();
9525    _TryKeyword {
9526        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
9527            "try", span,
9528        ))),
9529    }
9530}
9531impl ::m2_syn::Token for _TryKeyword {
9532    const SPELLING: &'static str = "try";
9533    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
9534        match token {
9535            ::m2_syn::TokenTree::Ident(token) => {
9536                token.text() == "try" || token.text().strip_prefix("Core$") == Some("try")
9537            }
9538            _ => false,
9539        }
9540    }
9541    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
9542        Self::matches_token_tree(&token).then_some(Self {
9543            raw: ::std::boxed::Box::new(token),
9544        })
9545    }
9546}
9547impl ::m2_syn::Parse for _TryKeyword {
9548    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
9549        input.parse_token()
9550    }
9551}
9552impl ::m2_syn::ToTokens for _TryKeyword {
9553    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
9554        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
9555    }
9556}
9557impl ::m2_syn::PrettyTree for _TryKeyword {
9558    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
9559        ::m2_syn::PrettyNode::token(
9560            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
9561            <Self as ::m2_syn::Token>::SPELLING,
9562            ::m2_syn::Spanned::span(self),
9563        )
9564    }
9565}
9566impl<N> ::m2_syn::Reconstruct<N> for _TryKeyword
9567where
9568    N: ::m2_syn::ExternalCstNode,
9569{
9570    fn matches(node: &N) -> bool {
9571        node.identity().matches("try", false)
9572    }
9573    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
9574        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
9575            return Err(::m2_syn::ReconstructError::wrong_node(
9576                "try",
9577                false,
9578                node.identity(),
9579            ));
9580        }
9581        Ok(_TryKeyword(node.span()))
9582    }
9583}
9584#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
9585pub struct _WhenKeyword {
9586    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
9587}
9588#[doc(hidden)]
9589#[allow(non_snake_case)]
9590pub fn _WhenKeyword<S: ::m2_syn::Spanned>(span: S) -> _WhenKeyword {
9591    let span = span.span();
9592    _WhenKeyword {
9593        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
9594            "when", span,
9595        ))),
9596    }
9597}
9598impl ::m2_syn::Token for _WhenKeyword {
9599    const SPELLING: &'static str = "when";
9600    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
9601        match token {
9602            ::m2_syn::TokenTree::Ident(token) => {
9603                token.text() == "when" || token.text().strip_prefix("Core$") == Some("when")
9604            }
9605            _ => false,
9606        }
9607    }
9608    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
9609        Self::matches_token_tree(&token).then_some(Self {
9610            raw: ::std::boxed::Box::new(token),
9611        })
9612    }
9613}
9614impl ::m2_syn::Parse for _WhenKeyword {
9615    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
9616        input.parse_token()
9617    }
9618}
9619impl ::m2_syn::ToTokens for _WhenKeyword {
9620    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
9621        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
9622    }
9623}
9624impl ::m2_syn::PrettyTree for _WhenKeyword {
9625    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
9626        ::m2_syn::PrettyNode::token(
9627            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
9628            <Self as ::m2_syn::Token>::SPELLING,
9629            ::m2_syn::Spanned::span(self),
9630        )
9631    }
9632}
9633impl<N> ::m2_syn::Reconstruct<N> for _WhenKeyword
9634where
9635    N: ::m2_syn::ExternalCstNode,
9636{
9637    fn matches(node: &N) -> bool {
9638        node.identity().matches("when", false)
9639    }
9640    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
9641        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
9642            return Err(::m2_syn::ReconstructError::wrong_node(
9643                "when",
9644                false,
9645                node.identity(),
9646            ));
9647        }
9648        Ok(_WhenKeyword(node.span()))
9649    }
9650}
9651#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
9652pub struct _WhileKeyword {
9653    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
9654}
9655#[doc(hidden)]
9656#[allow(non_snake_case)]
9657pub fn _WhileKeyword<S: ::m2_syn::Spanned>(span: S) -> _WhileKeyword {
9658    let span = span.span();
9659    _WhileKeyword {
9660        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Ident(::m2_syn::IdentToken::new(
9661            "while", span,
9662        ))),
9663    }
9664}
9665impl ::m2_syn::Token for _WhileKeyword {
9666    const SPELLING: &'static str = "while";
9667    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
9668        match token {
9669            ::m2_syn::TokenTree::Ident(token) => {
9670                token.text() == "while" || token.text().strip_prefix("Core$") == Some("while")
9671            }
9672            _ => false,
9673        }
9674    }
9675    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
9676        Self::matches_token_tree(&token).then_some(Self {
9677            raw: ::std::boxed::Box::new(token),
9678        })
9679    }
9680}
9681impl ::m2_syn::Parse for _WhileKeyword {
9682    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
9683        input.parse_token()
9684    }
9685}
9686impl ::m2_syn::ToTokens for _WhileKeyword {
9687    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
9688        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
9689    }
9690}
9691impl ::m2_syn::PrettyTree for _WhileKeyword {
9692    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
9693        ::m2_syn::PrettyNode::token(
9694            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
9695            <Self as ::m2_syn::Token>::SPELLING,
9696            ::m2_syn::Spanned::span(self),
9697        )
9698    }
9699}
9700impl<N> ::m2_syn::Reconstruct<N> for _WhileKeyword
9701where
9702    N: ::m2_syn::ExternalCstNode,
9703{
9704    fn matches(node: &N) -> bool {
9705        node.identity().matches("while", false)
9706    }
9707    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
9708        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
9709            return Err(::m2_syn::ReconstructError::wrong_node(
9710                "while",
9711                false,
9712                node.identity(),
9713            ));
9714        }
9715        Ok(_WhileKeyword(node.span()))
9716    }
9717}
9718#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
9719pub struct _Scl {
9720    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
9721}
9722#[doc(hidden)]
9723#[allow(non_snake_case)]
9724pub fn _Scl<S: ::m2_syn::Spanned>(span: S) -> _Scl {
9725    let span = span.span();
9726    _Scl {
9727        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(";", span))),
9728    }
9729}
9730impl ::m2_syn::Token for _Scl {
9731    const SPELLING: &'static str = ";";
9732    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
9733        match token {
9734            ::m2_syn::TokenTree::Punct(token) => token.text() == ";",
9735            _ => false,
9736        }
9737    }
9738    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
9739        Self::matches_token_tree(&token).then_some(Self {
9740            raw: ::std::boxed::Box::new(token),
9741        })
9742    }
9743}
9744impl ::m2_syn::Parse for _Scl {
9745    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
9746        input.parse_token()
9747    }
9748}
9749impl ::m2_syn::ToTokens for _Scl {
9750    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
9751        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
9752    }
9753}
9754impl ::m2_syn::PrettyTree for _Scl {
9755    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
9756        ::m2_syn::PrettyNode::token(
9757            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
9758            <Self as ::m2_syn::Token>::SPELLING,
9759            ::m2_syn::Spanned::span(self),
9760        )
9761    }
9762}
9763impl<N> ::m2_syn::Reconstruct<N> for _Scl
9764where
9765    N: ::m2_syn::ExternalCstNode,
9766{
9767    fn matches(node: &N) -> bool {
9768        node.identity().matches(";", false)
9769    }
9770    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
9771        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
9772            return Err(::m2_syn::ReconstructError::wrong_node(
9773                ";",
9774                false,
9775                node.identity(),
9776            ));
9777        }
9778        Ok(_Scl(node.span()))
9779    }
9780}
9781#[derive(Debug, Clone, PartialEq, Eq, ::m2_syn::Spanned)]
9782pub struct _Cma {
9783    raw: ::std::boxed::Box<::m2_syn::TokenTree>,
9784}
9785#[doc(hidden)]
9786#[allow(non_snake_case)]
9787pub fn _Cma<S: ::m2_syn::Spanned>(span: S) -> _Cma {
9788    let span = span.span();
9789    _Cma {
9790        raw: ::std::boxed::Box::new(::m2_syn::TokenTree::Punct(::m2_syn::Punct::new(",", span))),
9791    }
9792}
9793impl ::m2_syn::Token for _Cma {
9794    const SPELLING: &'static str = ",";
9795    fn matches_token_tree(token: &::m2_syn::TokenTree) -> bool {
9796        match token {
9797            ::m2_syn::TokenTree::Punct(token) => token.text() == ",",
9798            _ => false,
9799        }
9800    }
9801    fn from_token_tree(token: ::m2_syn::TokenTree) -> ::std::option::Option<Self> {
9802        Self::matches_token_tree(&token).then_some(Self {
9803            raw: ::std::boxed::Box::new(token),
9804        })
9805    }
9806}
9807impl ::m2_syn::Parse for _Cma {
9808    fn parse(input: &mut ::m2_syn::ParseStream) -> Result<Self, ::m2_syn::TokenParseError> {
9809        input.parse_token()
9810    }
9811}
9812impl ::m2_syn::ToTokens for _Cma {
9813    fn to_tokens(&self, output: &mut ::m2_syn::TokenStream) {
9814        ::m2_syn::ToTokens::to_tokens(&self.raw, output);
9815    }
9816}
9817impl ::m2_syn::PrettyTree for _Cma {
9818    fn pretty_tree(&self) -> ::m2_syn::PrettyNode {
9819        ::m2_syn::PrettyNode::token(
9820            ::std::format!("Token![{}]", <Self as ::m2_syn::Token>::SPELLING),
9821            <Self as ::m2_syn::Token>::SPELLING,
9822            ::m2_syn::Spanned::span(self),
9823        )
9824    }
9825}
9826impl<N> ::m2_syn::Reconstruct<N> for _Cma
9827where
9828    N: ::m2_syn::ExternalCstNode,
9829{
9830    fn matches(node: &N) -> bool {
9831        node.identity().matches(",", false)
9832    }
9833    fn reconstruct(node: N) -> Result<Self, ::m2_syn::ReconstructError> {
9834        if !<Self as ::m2_syn::Reconstruct<N>>::matches(&node) {
9835            return Err(::m2_syn::ReconstructError::wrong_node(
9836                ",",
9837                false,
9838                node.identity(),
9839            ));
9840        }
9841        Ok(_Cma(node.span()))
9842    }
9843}
9844#[macro_export]
9845macro_rules! Token {
9846    [!=] => { $crate::_BngEql };
9847    [#] => { $crate::_Hsh };
9848    [#?] => { $crate::_HshQsm };
9849    [%] => { $crate::_Mod };
9850    [%=] => { $crate::_ModEql };
9851    [&] => { $crate::_Amp };
9852    [&=] => { $crate::_AmpEql };
9853    [*] => { $crate::_Mul };
9854    [*=] => { $crate::_MulEql };
9855    [**] => { $crate::_MulMul };
9856    [**=] => { $crate::_MulMulEql };
9857    [+] => { $crate::_Add };
9858    [+=] => { $crate::_AddEql };
9859    [++] => { $crate::_AddAdd };
9860    [++=] => { $crate::_AddAddEql };
9861    [-] => { $crate::_Sub };
9862    [-=] => { $crate::_SubEql };
9863    [->] => { $crate::_SubGst };
9864    [.] => { $crate::_Dot };
9865    [..] => { $crate::_DotDot };
9866    [..=] => { $crate::_DotDotEql };
9867    [..<] => { $crate::_DotDotLst };
9868    [..<=] => { $crate::_DotDotLstEql };
9869    [.?] => { $crate::_DotQsm };
9870    [/] => { $crate::_Slh };
9871    [/=] => { $crate::_SlhEql };
9872    [/ /] => { $crate::_SlhSlh };
9873    [/ /=] => { $crate::_SlhSlhEql };
9874    [:] => { $crate::_Col };
9875    [:=] => { $crate::_ColEql };
9876    [<] => { $crate::_Lst };
9877    [<-] => { $crate::_LstSub };
9878    [<<] => { $crate::_LstLst };
9879    [<<=] => { $crate::_LstLstEql };
9880    [<=] => { $crate::_LstEql };
9881    [<==] => { $crate::_LstEqlEql };
9882    [<===] => { $crate::_LstEqlEqlEql };
9883    [<==>] => { $crate::_LstEqlEqlGst };
9884    [<==>=] => { $crate::_LstEqlEqlGstEql };
9885    [=] => { $crate::_Eql };
9886    [=!=] => { $crate::_EqlBngEql };
9887    [==] => { $crate::_EqlEql };
9888    [===] => { $crate::_EqlEqlEql };
9889    [===>] => { $crate::_EqlEqlEqlGst };
9890    [===>=] => { $crate::_EqlEqlEqlGstEql };
9891    [==>] => { $crate::_EqlEqlGst };
9892    [==>=] => { $crate::_EqlEqlGstEql };
9893    [=>] => { $crate::_EqlGst };
9894    [>] => { $crate::_Gst };
9895    [>=] => { $crate::_GstEql };
9896    [>>] => { $crate::_GstGst };
9897    [>>=] => { $crate::_GstGstEql };
9898    [?] => { $crate::_Qsm };
9899    [??] => { $crate::_QsmQsm };
9900    [??=] => { $crate::_QsmQsmEql };
9901    [@] => { $crate::_Att };
9902    [@=] => { $crate::_AttEql };
9903    [@@] => { $crate::_AttAtt };
9904    [@@=] => { $crate::_AttAttEql };
9905    [@@?] => { $crate::_AttAttQsm };
9906    [@@?=] => { $crate::_AttAttQsmEql };
9907    ["\\"] => { $crate::_Bsl };
9908    ["\\="] => { $crate::_BslEql };
9909    ["\\\\"] => { $crate::_BslBsl };
9910    ["\\\\="] => { $crate::_BslBslEql };
9911    [^] => { $crate::_Crt };
9912    [^=] => { $crate::_CrtEql };
9913    [^**] => { $crate::_CrtMulMul };
9914    [^**=] => { $crate::_CrtMulMulEql };
9915    [^<] => { $crate::_CrtLst };
9916    [^<=] => { $crate::_CrtLstEql };
9917    [^>] => { $crate::_CrtGst };
9918    [^>=] => { $crate::_CrtGstEql };
9919    [^^] => { $crate::_CrtCrt };
9920    [^^=] => { $crate::_CrtCrtEql };
9921    [_] => { $crate::_Ubs };
9922    [_=] => { $crate::_UbsEql };
9923    [_<] => { $crate::_UbsLst };
9924    [_<=] => { $crate::_UbsLstEql };
9925    [_>] => { $crate::_UbsGst };
9926    [_>=] => { $crate::_UbsGstEql };
9927    [|] => { $crate::_Pip };
9928    [|=] => { $crate::_PipEql };
9929    [|-] => { $crate::_PipSub };
9930    [|-=] => { $crate::_PipSubEql };
9931    [|_] => { $crate::_PipUbs };
9932    [|_=] => { $crate::_PipUbsEql };
9933    [||] => { $crate::_PipPip };
9934    [||=] => { $crate::_PipPipEql };
9935    [~] => { $crate::_Tld };
9936    [~=] => { $crate::_TldEql };
9937    ["·"] => { $crate::_Cdt };
9938    ["·="] => { $crate::_CdtEql };
9939    ["⊠"] => { $crate::_Box };
9940    ["⊠="] => { $crate::_BoxEql };
9941    ["⧢"] => { $crate::_Sfp };
9942    ["⧢="] => { $crate::_SfpEql };
9943    [and] => { $crate::_And };
9944    [or] => { $crate::_Or };
9945    [SPACE] => { $crate::_Space };
9946    [xor] => { $crate::_Xor };
9947    [!] => { $crate::_Bng };
9948    [(*)] => { $crate::_Graded };
9949    [^!] => { $crate::_CrtBng };
9950    [^*] => { $crate::_CrtMul };
9951    [^~] => { $crate::_CrtTld };
9952    [_!] => { $crate::_UbsBng };
9953    [_*] => { $crate::_UbsMul };
9954    [_~] => { $crate::_UbsTld };
9955    [not] => { $crate::_Not };
9956    [break] => { $crate::_BreakKeyword };
9957    [breakpoint] => { $crate::_BreakpointKeyword };
9958    [catch] => { $crate::_CatchKeyword };
9959    [continue] => { $crate::_ContinueKeyword };
9960    [do] => { $crate::_DoKeyword };
9961    [elapsedTime] => { $crate::_ElapsedTimeKeyword };
9962    [elapsedTiming] => { $crate::_ElapsedTimingKeyword };
9963    [else] => { $crate::_ElseKeyword };
9964    [except] => { $crate::_ExceptKeyword };
9965    [finish] => { $crate::_FinishKeyword };
9966    [for] => { $crate::_ForKeyword };
9967    [from] => { $crate::_FromKeyword };
9968    [global] => { $crate::_GlobalKeyword };
9969    [if] => { $crate::_IfKeyword };
9970    [in] => { $crate::_InKeyword };
9971    [list] => { $crate::_ListKeyword };
9972    [local] => { $crate::_LocalKeyword };
9973    [new] => { $crate::_NewKeyword };
9974    [of] => { $crate::_OfKeyword };
9975    [profile] => { $crate::_ProfileKeyword };
9976    [return] => { $crate::_ReturnKeyword };
9977    [shield] => { $crate::_ShieldKeyword };
9978    [step] => { $crate::_StepKeyword };
9979    [symbol] => { $crate::_SymbolKeyword };
9980    [TEST] => { $crate::_TestKeyword };
9981    [then] => { $crate::_ThenKeyword };
9982    [threadLocal] => { $crate::_ThreadLocalKeyword };
9983    [threadVariable] => { $crate::_ThreadVariableKeyword };
9984    [throw] => { $crate::_ThrowKeyword };
9985    [time] => { $crate::_TimeKeyword };
9986    [timing] => { $crate::_TimingKeyword };
9987    [to] => { $crate::_ToKeyword };
9988    [trap] => { $crate::_TrapKeyword };
9989    [try] => { $crate::_TryKeyword };
9990    [when] => { $crate::_WhenKeyword };
9991    [while] => { $crate::_WhileKeyword };
9992    [;] => { $crate::_Scl };
9993    [,] => { $crate::_Cma };
9994    [$($unsupported:tt)*] => { compile_error!("token was not declared in `syntax!`") };
9995}
9996#[doc(hidden)]
9997#[macro_export]
9998macro_rules! __m2_syn_parse_info {
9999    ($spelling:expr , $parse_info:ident) => {
10000        match $spelling {
10001            "!=" => Some($parse_info::binary(36u8, 35u8)),
10002            "#" => Some($parse_info::prefix_binary(70u8, 70u8, 61u8)),
10003            "#?" => Some($parse_info::binary(70u8, 70u8)),
10004            "%" => Some($parse_info::binary(58u8, 58u8)),
10005            "%=" => Some($parse_info::binary(14u8, 13u8)),
10006            "&" => Some($parse_info::binary(46u8, 46u8)),
10007            "&=" => Some($parse_info::binary(14u8, 13u8)),
10008            "*" => Some($parse_info::prefix_binary(58u8, 58u8, 58u8)),
10009            "*=" => Some($parse_info::binary(14u8, 13u8)),
10010            "**" => Some($parse_info::binary(54u8, 54u8)),
10011            "**=" => Some($parse_info::binary(14u8, 13u8)),
10012            "+" => Some($parse_info::prefix_binary(50u8, 50u8, 50u8)),
10013            "+=" => Some($parse_info::binary(14u8, 13u8)),
10014            "++" => Some($parse_info::binary(50u8, 50u8)),
10015            "++=" => Some($parse_info::binary(14u8, 13u8)),
10016            "-" => Some($parse_info::prefix_binary(50u8, 50u8, 50u8)),
10017            "-=" => Some($parse_info::binary(14u8, 13u8)),
10018            "->" => Some($parse_info::binary(14u8, 13u8)),
10019            "." => Some($parse_info::binary(70u8, 70u8)),
10020            ".." => Some($parse_info::binary(48u8, 48u8)),
10021            "..=" => Some($parse_info::binary(14u8, 13u8)),
10022            "..<" => Some($parse_info::binary(48u8, 48u8)),
10023            "..<=" => Some($parse_info::binary(14u8, 13u8)),
10024            ".?" => Some($parse_info::binary(70u8, 70u8)),
10025            "/" => Some($parse_info::binary(58u8, 58u8)),
10026            "/=" => Some($parse_info::binary(14u8, 13u8)),
10027            "//" => Some($parse_info::binary(58u8, 58u8)),
10028            "//=" => Some($parse_info::binary(14u8, 13u8)),
10029            ":" => Some($parse_info::binary(40u8, 39u8)),
10030            ":=" => Some($parse_info::binary(14u8, 13u8)),
10031            "<" => Some($parse_info::prefix_binary(36u8, 35u8, 36u8)),
10032            "<-" => Some($parse_info::binary(14u8, 13u8)),
10033            "<<" => Some($parse_info::prefix_binary(18u8, 18u8, 18u8)),
10034            "<<=" => Some($parse_info::binary(14u8, 13u8)),
10035            "<=" => Some($parse_info::prefix_binary(36u8, 35u8, 36u8)),
10036            "<==" => Some($parse_info::prefix_binary(26u8, 25u8, 26u8)),
10037            "<===" => Some($parse_info::prefix_binary(22u8, 21u8, 22u8)),
10038            "<==>" => Some($parse_info::binary(24u8, 23u8)),
10039            "<==>=" => Some($parse_info::binary(14u8, 13u8)),
10040            "=" => Some($parse_info::binary(14u8, 13u8)),
10041            "=!=" => Some($parse_info::binary(36u8, 35u8)),
10042            "==" => Some($parse_info::binary(36u8, 35u8)),
10043            "===" => Some($parse_info::binary(36u8, 35u8)),
10044            "===>" => Some($parse_info::binary(22u8, 21u8)),
10045            "===>=" => Some($parse_info::binary(14u8, 13u8)),
10046            "==>" => Some($parse_info::binary(26u8, 25u8)),
10047            "==>=" => Some($parse_info::binary(14u8, 13u8)),
10048            "=>" => Some($parse_info::binary(14u8, 13u8)),
10049            ">" => Some($parse_info::prefix_binary(36u8, 35u8, 36u8)),
10050            ">=" => Some($parse_info::prefix_binary(36u8, 35u8, 36u8)),
10051            ">>" => Some($parse_info::binary(14u8, 13u8)),
10052            ">>=" => Some($parse_info::binary(14u8, 13u8)),
10053            "?" => Some($parse_info::prefix_binary(36u8, 35u8, 36u8)),
10054            "??" => Some($parse_info::prefix_binary(28u8, 27u8, 28u8)),
10055            "??=" => Some($parse_info::binary(14u8, 13u8)),
10056            "@" => Some($parse_info::binary(60u8, 59u8)),
10057            "@=" => Some($parse_info::binary(14u8, 13u8)),
10058            "@@" => Some($parse_info::binary(66u8, 66u8)),
10059            "@@=" => Some($parse_info::binary(14u8, 13u8)),
10060            "@@?" => Some($parse_info::binary(66u8, 66u8)),
10061            "@@?=" => Some($parse_info::binary(14u8, 13u8)),
10062            "\\" => Some($parse_info::binary(58u8, 57u8)),
10063            "\\=" => Some($parse_info::binary(14u8, 13u8)),
10064            "\\\\" => Some($parse_info::binary(58u8, 57u8)),
10065            "\\\\=" => Some($parse_info::binary(14u8, 13u8)),
10066            "^" => Some($parse_info::binary(70u8, 70u8)),
10067            "^=" => Some($parse_info::binary(14u8, 13u8)),
10068            "^**" => Some($parse_info::binary(70u8, 70u8)),
10069            "^**=" => Some($parse_info::binary(14u8, 13u8)),
10070            "^<" => Some($parse_info::binary(70u8, 70u8)),
10071            "^<=" => Some($parse_info::binary(70u8, 70u8)),
10072            "^>" => Some($parse_info::binary(70u8, 70u8)),
10073            "^>=" => Some($parse_info::binary(70u8, 70u8)),
10074            "^^" => Some($parse_info::binary(44u8, 44u8)),
10075            "^^=" => Some($parse_info::binary(14u8, 13u8)),
10076            "_" => Some($parse_info::binary(70u8, 70u8)),
10077            "_=" => Some($parse_info::binary(14u8, 13u8)),
10078            "_<" => Some($parse_info::binary(70u8, 70u8)),
10079            "_<=" => Some($parse_info::binary(70u8, 70u8)),
10080            "_>" => Some($parse_info::binary(70u8, 70u8)),
10081            "_>=" => Some($parse_info::binary(70u8, 70u8)),
10082            "|" => Some($parse_info::binary(42u8, 42u8)),
10083            "|=" => Some($parse_info::binary(14u8, 13u8)),
10084            "|-" => Some($parse_info::prefix_binary(20u8, 20u8, 20u8)),
10085            "|-=" => Some($parse_info::binary(14u8, 13u8)),
10086            "|_" => Some($parse_info::binary(70u8, 70u8)),
10087            "|_=" => Some($parse_info::binary(14u8, 13u8)),
10088            "||" => Some($parse_info::binary(38u8, 38u8)),
10089            "||=" => Some($parse_info::binary(14u8, 13u8)),
10090            "~" => Some($parse_info::prefix_binary(36u8, 35u8, 36u8)),
10091            "~=" => Some($parse_info::binary(14u8, 13u8)),
10092            "·" => Some($parse_info::binary(52u8, 52u8)),
10093            "·=" => Some($parse_info::binary(14u8, 13u8)),
10094            "⊠" => Some($parse_info::binary(54u8, 54u8)),
10095            "⊠=" => Some($parse_info::binary(14u8, 13u8)),
10096            "⧢" => Some($parse_info::binary(54u8, 54u8)),
10097            "⧢=" => Some($parse_info::binary(14u8, 13u8)),
10098            "and" => Some($parse_info::binary(32u8, 31u8)),
10099            "or" => Some($parse_info::binary(28u8, 27u8)),
10100            "SPACE" => Some($parse_info::binary(62u8, 61u8)),
10101            "xor" => Some($parse_info::binary(30u8, 29u8)),
10102            "!" => Some($parse_info::postfix(72u8)),
10103            "(*)" => Some($parse_info::postfix(64u8)),
10104            "^!" => Some($parse_info::postfix(72u8)),
10105            "^*" => Some($parse_info::postfix(68u8)),
10106            "^~" => Some($parse_info::postfix(68u8)),
10107            "_!" => Some($parse_info::postfix(72u8)),
10108            "_*" => Some($parse_info::postfix(68u8)),
10109            "_~" => Some($parse_info::postfix(68u8)),
10110            "not" => Some($parse_info::prefix(34u8, 34u8)),
10111            _ => None,
10112        }
10113    };
10114}